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]];
}