我有一些看起来像这样的 json 数据:
{
items: [
{ // object 1
aProperty: "aValue",
anotherProperty: "anotherValue",
anObjectProperty: {}
},
{ //object 2
aProperty: "aValue",
anotherProperty: "anotherValue",
anObjectProperty: {}
}
]
}
我想使用 Mantle 将此 json 映射到包含两个对象的数组中。
这将如下所示:
@interface MyObject : MTLModel <MTLJSONSerializing>
@property (nonatomic, strong) NSString *myProperty;
@property (nonatomic, strong) NSString *anotherProperty;
@property (nonatomic, strong) NSObject *anObject;
@end
@implementation MyObject
+ (NSDictionary *)JSONKeyPathsByPropertyKey {
return @{
@"myProperty": @"myProperty",
@"anotherProperty" : @"anotherProperty",
@"anObject": @"anObject"
};
}
@end
但是,这需要我在 json 中找到“items”键,然后解析该键中的内容。
相反,我希望 Mantle 为我映射整个对象。所以,我想出了这个解决方案:
@interface MyObjects : MTLModel <MTLJSONSerializing>
@property (nonatomic) NSArray *items;
@end
@implementation MyObjects
+ (NSDictionary *)JSONKeyPathsByPropertyKey {
return @{
@"items": @"items"
};
}
+ (NSValueTransformer *)itemsJSONTransformer
{
return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:[MyObject class]];
}
@end
什么时候都设置完成,这将给我留下如下内容
NSArray *myArrayOfObjects = (MyObjects*)myobjects.items;
这一切都很好,但我相信创建一个“MyObjects”类只是为了作为 MyObject 数组的占位符是矫枉过正的。有更好的解决方案吗?理想情况下,我正在寻找一个为我处理根“项目”键的地幔设置(或者比创建两个类更容易获取对象数组的设置),这样当它解析时,它就出来了2 个对象的数组。
谢谢!