Objective-C使用JSONModel将JSON反序列化为对象

时间:2014-04-10 06:13:32

标签: ios objective-c json jsonmodel

有没有办法使用JSONModel库而不继承JSONModel类。

我想将JSON反序列化为Objective C类而不使用继承形式JSONModel。

是否有另一个库将JSON反序列化为没有继承的对象?

3 个答案:

答案 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派生实例。