Разобрать JSON с Mantle, у которого есть Root Keys
Я пытаюсь проанализировать JSON, полученный от REST-Webservice.
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?
1 ответ
Кажется, что 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];