2013-02-21 50 views
0

我是JSON的新手,不明白爲什麼會失敗。根據在線驗證工具,JSON是有效的,但是NSJSONSerilization表示這個字符串是無效的。爲什麼它是無效的?爲什麼使用NSJSONSerialization這個JSON無效?

NSString* JSON = @"{\"Questionnaire\":{\"questionnaireid\":1,\"modifiedDate\":\"2012-12-28 15:27:00\"}}"; 

if (![NSJSONSerialization isValidJSONObject:JSON]) { 
    return nil; 
} 

NSError *jsonParsingError = nil; 
NSDictionary* data = [NSJSONSerialization dataWithJSONObject:JSON options:NSJSONReadingMutableContainers error:&jsonParsingError]; 
+0

看到我的編輯答案。祝你好運! – 2013-02-21 15:08:14

回答

2

爲什麼你在你自己創建JSON時做了序列化?

你應該做的:

NSData *jsonPayload = [JSON dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonPayload 
options:kNilOptions error:&error]; 
+0

我一直在思考。謝謝您的幫助。 – 2013-02-21 15:35:24

1

因爲JSON對象的類型必須的NSArray或NSDictionary中的,而你是傳遞一個的NSString。

docs

可轉化爲JSON必須具有以下 屬性的對象:

  • 頂層對象是一個NSArray或NSDictionary的。
  • 所有對象都是NSString,NSNumber,NSArray,NSDictionary或NSNull的實例。
  • 所有的字典鍵都是NSString的實例。
  • 數字不是NaN或無窮大。

UPDATE

你可能想這樣做:

NSData *jsonData = [JSON dataUsingEncoding:NSUTF8StringEncoding]; 
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; 
+0

也dataWithJSONObject返回NSData *不NSDictionary * – Daniel 2013-02-21 15:08:07