首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用具有根键的Mantle解析JSON

使用具有根键的Mantle解析JSON
EN

Stack Overflow用户
提问于 2015-10-23 20:16:53
回答 1查看 210关注 0票数 1

我尝试解析从REST-Webservice获得的JSON。

Seat.json:

代码语言:javascript
复制
{"seat":{ "row":1,
          "seatNr":1,
          "seatId":5782}}

我的MTLModel (这不起作用。因为在json字段前面有一个座位。)

代码语言:javascript
复制
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
         @"seatId"  :@"seatId",
         @"row"     :@"row",
         @"seatNr"  :@"seatNr"};
}

这将会起作用,因为它通过seat字典访问字段。

代码语言:javascript
复制
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
         @"seatId"  :@"seat.seatId",
         @"row"     :@"seat.row",
         @"seatNr"  :@"seat.seatNr"};
}

但是这样嵌套的对象就不能工作了。JSON示例:

代码语言:javascript
复制
{"participant": {"name":"Test User",
                 "participantId":4243,
                 "chosenSeat":{"row":1,
                         "seatNr":21,
                         "seatId":5802}
                }

映射:

代码语言:javascript
复制
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
    return @{
         @"name"            : @"participant.name",
         @"participantId"   : @"participant.participantId",
         @"seat"            : @"participant.chosenSeat"};
}

+ (NSValueTransformer *)seatJSONTransformer {
    return [MTLJSONAdapter dictionaryTransformerWithModelClass:Seat.class];
}

这不会起作用,因为只有当字典以seat开头时,seat映射才会起作用。

如何将Mantle SDK与这样的JSON对象一起使用?

EN

回答 1

Stack Overflow用户

发布于 2016-05-29 16:43:11

似乎seat不是使用Mantle初始化对象所需的数据的一部分,因此我将使用:

代码语言:javascript
复制
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
         @"seatId"  :@"seatId",
         @"row"     :@"row",
         @"seatNr"  :@"seatNr"};
}

(或mtl_identityPropertyMapWithModel)

然后,在解析JSON时,只需使用:

代码语言:javascript
复制
NSError *error = nil;
Seat *seat = [MTLJSONAdapter modelOfClass:Seat.class
    fromJSONDictionary:sourceJSON[@"seat"] error:&error];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33302136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档