我正在使用AFNetworking,我試圖發佈一個JSON結構。問題是,而不是像{"my_property":"my value"}
,它的格式爲{my_property:'my_value'}
。我猜在大多數情況下,第一組引用的損失是可以的,但我不確定如何處理非JSON單引號,並且對於它爲什麼會生成單引號的問題感到非常困惑它從NSDictionary創建JSON。此外,它包括[對象]參考,我只是期望一個「{」。這是服務器越來越:AFNetworking發佈格式不正確的JSON - 單引號和[對象]參考
...
num_matches: 32,
view_instance: properties_in_view: [Object],
[ { view_instance_ctr: 0, view_id: '4e5bb37258200ed9aa000011' },
...
目標是iOS的5.0,所以我假設它使用NSJSONSerialization創建JSON(雖然我沒有試過尚未驗證)。我發送的字典使用isValidJSONObject驗證爲JSON。如果我打印出序列化版本,它看起來很棒。代碼的簡化版本是這樣的:
NSDictionary *params = myDictionaryThatValidatesToJSON;
httpClient.parameterEncoding = AFJSONParameterEncoding;
NSMutableURLRequest *request = [httpClient
requestWithMethod:@"POST" path:@"" parameters:params];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation start];
我希望有一個bigDummy = NO
標誌我失蹤。
我敢肯定,這是在服務器上正在接收什麼但我會仔細檢查。請注意,我可以使用Firefox REST插件成功發送相同的JSON,並且實際上記錄的數據都是雙引號。還有一點需要注意:以前我已經成功地將其他數據發送到服務器上的其他POST API,但是我總是使用一個大字符串初始化一個字典,我創建了一個轉義雙引號。我現在會嘗試一下,看看它是否有所作爲,並確保它不能成爲服務器問題。謝謝。 – michael 2012-03-05 16:31:08
另一種選擇是,如果JSON序列化程序確實生成[Object],那麼您的字典中必須有一個不尋常的對象 – JosephH 2012-03-05 16:45:21
我不太瞭解AFNetworking,儘管它說它將使用NSJSONSerialization(如果可用)。如果我這樣做: NSData * jsonData = [NSJSONSerialization dataWithJSONObject:outDict options:NSJSONWritingPrettyPrinted error:&error]; NSString * jsonOut = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 它生成有效的JSON。我以編程方式創建JSON,它非常簡單,所以我不認爲我介紹了任何奇怪的東西。 – michael 2012-03-05 17:17:47