我是JSON的新手,不明白为什么会失败。根据在线验证工具,JSON有效,但NSJSONSerilization说这个字符串无效。为什么它无效?
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 :(得分:2)
为什么在自己创建JSON时进行序列化?
你应该做什么:
NSData *jsonPayload = [JSON dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonPayload
options:kNilOptions error:&error];
答案 1 :(得分:1)
因为在传递NSString时,JSON对象必须是NSArray类型或NSDictionary类型。
来自docs:
可以转换为JSON的对象必须具有以下内容 属性:
- 顶级对象是NSArray或NSDictionary。
- 所有对象都是NSString,NSNumber,NSArray,NSDictionary或NSNull的实例。
- 所有字典键都是NSString的实例。
- 数字不是NaN或无穷大。
<强>更新强>
你可能想这样做:
NSData *jsonData = [JSON dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];