2013-03-06 51 views
1

我正在使用Xcode 4.6。我從服務器得到一個有效的Json字符串,並且正確地轉義了單引號。如果我從服務器上的字段中刪除單引號,則不會出現任何錯誤。可可錯誤3840 - 單引號解析NSJSONSerialization錯誤

這裏是JSON字符串:

jsonStr: '{ "status": 0, "message": "success", "object": [ { "currentthreatlevelname": "Guarded", "devicename": "Virendra\'s Pad", "threatlevelname": null, "enabled": false, "practicemode": false, "locationname": null, "currentthreatlevel": 3, "status": 0, "deviceid": "APLFC8C49AF-D4DF-4AE0-9E7B-D2A3E94ED387", "threatlevel": null, "location": null } ], "site": "s2 security" }' 

通過

NSString* jsonStr = [[NSString alloc] initWithData:_receivedData encoding:NSUTF8StringEncoding]; 

產生下面是解析代碼:

NSDictionary *d = [NSJSONSerialization JSONObjectWithData: _receivedData 
       options:NSJSONReadingMutableContainers|NSJSONReadingAllowFragments 
               error:&jsonError]; 

請幫助。謝謝。

+0

是'_receivedData'的開始和結束單引號的一部分嗎? – zneak 2013-03-06 18:01:43

回答

2

轉義「Virendra \'Pad中的單引號使得JSON無效。嘗試刪除反斜槓。

+0

如果我們無法控制服務器,如何在客戶端處理它呢? – 2015-02-26 07:49:23

+0

您可以在反序列化之前清理字符串。或者,告訴那些控制服務器的人,他們發送無效的JSON。 – 2015-03-05 22:53:45