JSON编码出错

时间:2015-02-07 14:22:57

标签: ios objective-c json

编码自定义对象(Room)的NSMutableArray 数组时遇到问题。 我的自定义对象是:-nameRoom(NSString)-numberRoom(NSInteger)。

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

这是错误: 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'JSON写入时无效的类型(会议室)

感谢。

2 个答案:

答案 0 :(得分:3)

From the docs(是的,有时阅读文档很有帮助)

  

您使用NSJSONSerialization类将JSON转换为Foundation   对象并将Foundation对象转换为JSON。

     

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

     
      
  • 顶级对象是NSArray或NSDictionary。

  •   
  • 所有对象都是NSString,NSNumber,NSArray,NSDictionary或NSNull的实例。

  •   
  • 所有字典键都是NSString的实例。

  •   
  • 数字不是NaN或无穷大。

  •   
     

其他规则可能适用。调用isValidJSONObject:或尝试a   转换是判断给定对象是否可以的明确方式   转换为JSON数据。

答案 1 :(得分:1)

JSON不支持自定义对象。

请参阅:Introducing JSON

为了支持自定义对象,您必须将其分解为标准JSON对象的图形。在OP的情况下,它只是一个包含nameRoomnumberRoom的字典。