Objective-C Mantle, десериализация словаря JSON

Я пытаюсь выяснить, как десериализовать объект, который содержит "словарь", который не является полным объектом.

Например, в нашем приложении у нас есть набор JSON-объектов, которые мы десериализовываем из JSON через Mantle. Простая модель может выглядеть так:

@interface Artist : MTLModel<MTLJSONSerializing>

@property (nonatomic, strong, nonnull)   NSString    *name;
@property (nonatomic, strong, nullable)   NSURL       *image;

@end

в классе коллекции у нас может быть что-то вроде этого:

@interface SomeCollection : MTLModel<MTLJSONSerializing>

@property (nonatomic, strong, nonnull)   NSString    *title; 
@property (nonatomic, strong, nonnull)   NSArray<Artist *>    *listOfArtists;

@end

и связанный .m будет иметь:

+ (NSValueTransformer *)listOfArtistsJSONTransformer {
    return [MTLJSONAdapter arrayTransformerWithModelClass:[Artist class]];
}

Здесь все хорошо.

Например, если JSON выглядит так:

{
    "title": "my collection with an array",
    "listOfArtists": [
            {
                "name": "Some Artist",
                "image": "http://www.google.com"
            },
            {
                "name": "Another Artist",
                "image": "http://www.artists.com"
            },
            {
                "name": "Jane Painter",
                "image": "http://www.jpainter.com"
            },
    ]
}

Объект десериализуется так, как нам нравится (где listOfArtists свойство содержит массив Artist *,

Тем не менее, я пытаюсь выяснить заклинание, если у нас есть другая коллекция, которая имеет:

@interface SomeOtherCollection : MTLModel<MTLJSONSerializing>

@property (nonatomic, strong, nonnull)   NSString    *title; 
@property (nonatomic, strong, nonnull)   NSDictionary<NSString *, Artist *>    *dictionaryOfArtists;

@end

и файл JSON, который может выглядеть

{
    "title": "my collection with a dictionary",
    "dictionaryOfArtists": {
            "139380bf-29ef-4cfc-95af-aa00f78f15f6": {
                "name": "Some Artist",
                "image": "http://www.google.com"
            },
            "4cdbc728-13e7-49c8-b45e-32ff0650ca67": {
                "name": "Another Artist",
                "image": "http://www.artists.com"
            },
            "2f2ec6f9-3af1-4789-b5de-399e14902ea8": {
                "name": "Jane Painter",
                "image": "http://www.jpainter.com"
            },
    }
}

Что бы listOfArtistsJSONTransformer метод похож?

Благодарю.

1 ответ

Я мало что знаю о Мантии, но похоже, что ты можешь использовать...

+ (NSValueTransformer *)assigneeJSONTransformer {
    return [MTLJSONAdapter dictionaryTransformerWithModelClass:[Artist class]];
}
Другие вопросы по тегам