我想解析這個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中沒有像數組這樣的對象 - 它是數組本身或類似的東西)。