Разобрать 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];
Другие вопросы по тегам