0

我有下面的代碼。問題以「/」,同時通過參數API

參數: -

{ "survey_answer" = "{\"answers_json\":\"{\\\"7d2c591c-9056-405c-9509-03266842b7‌​e5\\\":[\\\"1\\\"],\‌​\\"4090442c-90ce-42c‌​2-aae8-7c812b7c0f04\‌​\\":\\\"test from postman\\\",\\\"54bdcf13-e500-418a-8bab-d0639e7e1e28\\\":\\\‌​"2\\\",\\\"63bb0722-‌​7099-4820-a400-36b89‌​38c6ae8\\\":\\\"hell‌​o\\\",\\\"f884a7d1-f‌​9d9-4563-bb6e-945386‌​64f3bd\\\":\\\"test from cms and iphone\\\",\\\"ed3acc20-4ae4-493e-ac55-4d2d0f282886\\\":\\\"‌​1\\\"}\"}"; } 
+0

參數: - { 「survey_answer」= 「{\」 answers_json \ 「:\」{\\\ 「7d2c591c-9056-405c-9509-03266842b7e5 \\\」:[ \\\「1 \\\」],\\\「4090442c-90ce-42c2-aae8-7c812b7c0f04 \\\」:\\\「test from postman \\\」,\\\「」54bdcf13-e500-418a -8bab-d0639e7e1e28 \\\ 「:\\\」 2 \\\」,\\\ 「63bb0722-7099-4820-a400-36b8938c6ae8 \\\」:\\\ 「你好\\\」,\\\ 「f884a7d1-f9d9-4563-bb6e-94538664f3bd \\\」:\\「cms and iphone \\\ test」,\\「ed3acc20-4ae4-493e-ac55-4d2d0f282886 \\\」:\\\ 「1個\\\」} \ 「}」; } –

+1

我對問題添加了您的評論 - 這是它應該在哪裏。 – JeremyP

回答

1

此行

NSDictionary *answersDict = @{@"answers_json":json}; 

創建具有其值連載你原來的JSON對象的字符串結果一個鍵JSON對象。所有字符串中的"的需要與\進行轉義,所以這是它做什麼,即

{ "answer" : "{ "foo" : "bar" }" } 

是因爲在字符串中嵌入引號的不合法的。所以它這樣做:

{ "answer" : "{ \"foo\" : \"bar\" }" } 

然後你得到反斜槓的乘法當您打印生成的字符串,因爲反斜槓需要轉義。

要解決此問題,請使用JSON對象,而不是其序列化。上面的行變成:

NSDictionary *answersDict = @{@"answers_json": [answer copy]}; 
+0

謝謝@jeremyP。它運作良好! NSMutableDictionary * answer = [[NSMutableDictionary alloc] init]; [answer setObject:arrayOfAnswers forKey:currentQuestion.name];你可以使用NSData * jsonData = [NSJSONSerialization dataWithJSONObject:[answer copy] options:0 error:nil]; NSString * json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSDictionary * answersDict = @ {@「answers_json」:json}; parameters = @ {@「survey_answer」:answersDict}; –