我尝试解析从REST-Webservice获得的JSON。
Seat.json:
{"seat":{ "row":1,
"seatNr":1,
"seatId":5782}}
我的MTLModel(这不起作用。因为json字段前面有一个座位。)
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"seatId" :@"seatId",
@"row" :@"row",
@"seatNr" :@"seatNr"};
}
这样可行,因为它通过座位词典访问字段。
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"seatId" :@"seat.seatId",
@"row" :@"seat.row",
@"seatNr" :@"seat.seatNr"};
}
但是嵌套对象不起作用。示例JSON:
{"participant": {"name":"Test User",
"participantId":4243,
"chosenSeat":{"row":1,
"seatNr":21,
"seatId":5802}
}
映射:
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"name" : @"participant.name",
@"participantId" : @"participant.participantId",
@"seat" : @"participant.chosenSeat"};
}
+ (NSValueTransformer *)seatJSONTransformer {
return [MTLJSONAdapter dictionaryTransformerWithModelClass:Seat.class];
}
这不起作用,因为座位映射仅在字典以座位开头时才有效。
如何将Mantle SDK与JSON对象一起使用?
答案 0 :(得分:0)
似乎seat
不是使用Mantle
初始化对象所需数据的一部分,所以我会使用:
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"seatId" :@"seatId",
@"row" :@"row",
@"seatNr" :@"seatNr"};
}
(或mtl_identityPropertyMapWithModel
)
然后在解析JSON时使用:
NSError *error = nil;
Seat *seat = [MTLJSONAdapter modelOfClass:Seat.class
fromJSONDictionary:sourceJSON[@"seat"] error:&error];