我想解析这个JSON:https://api.guildwars2.com/v1/world_names.json?lang=en 我使用地幔。所以我做了两个类:server和serverList。JSON解析与地幔
//server.m:
@implementation GW2Server
+ (NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"serverID": @"id",
@"serverName": @"name",
};
}
+ (NSValueTransformer *)serverIDJSONTransformer
{
return [MTLValueTransformer reversibleTransformerWithBlock:^(NSString *stringFromJSON){
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
return [formatter numberFromString:stringFromJSON];
}];
}
+ (NSValueTransformer *)serverNameJSONTransformer
{
return [MTLValueTransformer reversibleTransformerWithBlock:^(NSString *stringFromJSON){
return stringFromJSON;
}];
}
@end
//serverList.m
@implementation GW2ServerList
+(NSDictionary *)JSONKeyPathsByPropertyKey
{
return @{
@"serverID": @"serverList.serverID",
@"serverName": @"serverList.serverName",
};
}
+ (NSValueTransformer *)serverListJSONTransformer
{
return [MTLValueTransformer mtl_JSONArrayTransformerWithModelClass:[GW2Server class]];
}
@end
问题是,当我尝试使用[MTLJSONAdapter modelOfClass:[GW2ServerList类] fromJSONDictionary:jSONDict错误: NULL],看起来它不能用于JSON数组。而我的JSON实际上是数组。那么我该如何解决这个问题呢? 我可以得到JSON数组,然后使用Mantle解析其中的每个对象,但是看起来好像还有一个我不知道的更好的方法。
UPD:很明显,问题出在serverList中,它由一组“服务器”对象组成。但我不知道如何正确地为它重写JSONKeyPathsByPropertyKey(因为在JSON中没有像数组这样的对象 - 它是数组本身或类似的东西)。