0

我是 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];
4

2 回答 2

2

为什么在您自己创建 JSON 时进行序列化?

你应该做什么:

NSData *jsonPayload = [JSON dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *data = [NSJSONSerialization JSONObjectWithData:jsonPayload
 options:kNilOptions error:&error];
于 2013-02-21T15:03:52.303 回答
1

因为在传递 NSString 时,JSON 对象必须是 NSArray 或 NSDictionary 类型。

文档

可以转换为 JSON 的对象必须具有以下属性:

  • 顶级对象是 NSArray 或 NSDictionary。
  • 所有对象都是 NSString、NSNumber、NSArray、NSDictionary 或 NSNull 的实例。
  • 所有字典键都是 NSString 的实例。
  • 数字不是 NaN 或无穷大。

更新

你可能想要这样做:

NSData *jsonData = [JSON dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err];
于 2013-02-21T15:05:21.417 回答