iOS7 是不是有轻量级 JSON 到对象映射器(不是 RestKit 或 NSJSONSerialization)?

Posted

技术标签:

【中文标题】iOS7 是不是有轻量级 JSON 到对象映射器(不是 RestKit 或 NSJSONSerialization)?【英文标题】:iOS7 is there a lightweight JSON to Object mapper, (NOT RestKit or NSJSONSerialization)?iOS7 是否有轻量级 JSON 到对象映射器(不是 RestKit 或 NSJSONSerialization)? 【发布时间】:2014-08-18 15:24:22 【问题描述】:

我当前的项目使用 AFNetworking 2.2,并且在我添加 Restkit 时通常拒绝编译。 有没有办法让我从其他一些轻量级库中获得如下定义的 RKObjectMapping 等价物?我说的是采用 JSON 并将其转换为自定义值对象,而不仅仅是字典或数组.

我想到了适用于 android 的 Google GSON,ios 有类似的东西吗?

我想要完成什么:

static RKObjectMapping* mapping = nil;

+(RKObjectMapping*)objectMapping


    if(mapping != nil)
    
        return mapping;
    

    //allows automatic unpacking of JSON payloads into  Value Objects
    //https://github.com/RestKit/RestKit/wiki/Object-Mapping


    //JSON - VO
    mapping = [RKObjectMapping mappingForClass:[MyVO class]];
    [mapping addAttributeMappingsFromDictionary:@
                                                         @"label": @"label",
                                                         @"icon": @"iconName",
                                                         @"action": @"actionName",
                                                         @"children": @"children"
                                                         ];

    return mapping;


【问题讨论】:

使用 NSJSONSerialization 生成一个 NSDictionary,然后为你的类编写一个 initWithDict: 方法。为您提供完全的控制权,而且并不比为最微不足道的情况进行“自动”对象映射更困难。 这可能有用***.com/questions/25213707/… 这是我目前正在使用的,但希望有一些东西可以让这更简单。 我为此付出了很多努力,这是最简单的方法。调用与您的 json 匹配,然后调用它。如果您想在运行时扩展该类,您可以在 json ***.com/questions/7819092/… 中添加具有匹配新键的属性 【参考方案1】:

您是否尝试过 NSJsonSerialization (https://developer.apple.com/library/ios/documentation/foundation/reference/nsjsonserialization_class/Reference/Reference.html)?它似乎完成了你所需要的。每当我需要解析 JSON 格式的任何内容时,我都会使用它,

【讨论】:

问题明确指出不是 NSJsonSerialization。 除非我弄错了......而且是盲目的,我发布这个答案很久之后标题就被改变了 在这种情况下,我很抱歉。您努力发布答案,非常感谢。【参考方案2】:
-(id) initWithDictionary:(NSDictionary*) dict 
    id self = [super init];
    if (id) 
        self.label = dict[@"label"];
        self.icon = dict[@"iconName"];
        self.action = dict[@"actionName"];
        self.children = dict[@"children"];
    
    return id;

【讨论】:

以上是关于iOS7 是不是有轻量级 JSON 到对象映射器(不是 RestKit 或 NSJSONSerialization)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用对象映射器解析以下 JSON

行映射器/转换器在spring boot中将对象数组列表转换为json

如何使用对象映射器从响应 JSON 映射子数组?

自动映射器。来自 json 的映射属性

对象映射器 - 解析 [AnyObject] 的数组

具有核心数据的 Alamofire 对象映射器