有没有办法使用JSONModel库而不继承JSONModel类。
我想将JSON反序列化为Objective C类而不使用继承形式JSONModel。
是否有另一个库将JSON反序列化为没有继承的对象?
答案 0 :(得分:2)
您不必在iOS中使用库进行JSON序列化。从iOS 5.0开始,有一个类 NSJSONSerialization 可用于执行此操作。 https://developer.apple.com/library/ios/documentation/foundation/reference/nsjsonserialization_class/Reference/Reference.html
考虑将此代码转换为json字符串
+(NSString*) jsonStringRepresentationOfSelectedReceiptients:(NSArray*) contactsList {
NSMutableArray* contactsArray = [[NSMutableArray alloc]init];
for (ContactObject *contactObj in contactsList) {
NSDictionary* ltPair = @{@"phone_no": [NSNumber numberWithLongLong:contactObj.phoneNo, @"email_id": contactObj.emailId, @"display_name": contactObj.displayName]};
[contactsArray addObject:ltPair];
}
NSData *jsonData=[NSJSONSerialization dataWithJSONObject:contactsArray options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"json string: %@", recptJson);
return jsonString;
}
希望这会有所帮助。 (我给了ios具体答案,因为标签与iOS有关。
答案 1 :(得分:1)
从iOS5开始,您可以使用NSJSONSerialization类进行序列化和反序列化。对于反序列化,您希望首先将json字符串转换为NSData对象,然后调用类方法JSONObjectWithData
NSData *jsonData = [myJsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:jsonData options:nil error:&error];
使用isKindOfClass,您可以查明这是一个字典还是数组,因为JSONObjectWithData将返回NSDictionary或NSArray,具体取决于您的JSON字符串是表示字典还是数组。
答案 2 :(得分:0)
为什么你不想继承JSONModel?
问题是当你从JSONModel继承时,你继承了库的所有工具。它的目的是像这样使用,因为库公开的方法不是静态的,因此你需要从JSONModel派生实例。