编码自定义对象(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写入时无效的类型(会议室)
感谢。
答案 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的情况下,它只是一个包含nameRoom
和numberRoom
的字典。