将JSON字典反序列化为自定义类

时间:2013-09-16 09:08:21

标签: objective-c json json-deserialization

我正在使用最新的SDK开发iOS 5.0及更高版本的应用程序。

我使用此代码获得NSDictionary

id jsonObject = [NSJSONSerialization
JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];

此字典具有类属性作为键,每个属性值作为值。

我正在尝试开发通用方法:

+ (id)FromJSON:(NSDictionary*)jsonDic toClass:(NSString*)className;

此方法将使用className参数实例化一个var(顺便说一下,我可以使用NSString及其类名来创建实例对象吗?)。

但我的问题是我可以知道每个jsonDic值的类型。我可以获取每个属性名称并尝试访问其类型(NSStringNSNumber等)。

有关如何操作的建议吗?

1 个答案:

答案 0 :(得分:0)

我用这种方式解决了我的问题:

+ (id)FromJSON:(NSDictionary*)jsonDic toClass:(NSString*)className
{
    Class ObjectClass = NSClassFromString(className);

    if (ObjectClass == nil)
        return nil;

    NSObject* loadedObject = [[ObjectClass alloc] init];

    [loadedObject setValuesForKeysWithDictionary:jsonDic];

    return loadedObject;
}

有任何评论吗?