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 배열을 가져온 다음 맨틀로 모든 객체를 구문 분석 할 수 있지만 잘 모르는 더 나은 방법이있는 것처럼 보입니다.
UPD : "server"개체의 단일 배열로 구성된 serverList에 문제가 있음이 분명합니다. 하지만 JSONKeyPathsByPropertyKey를 JSONKeyPathsByPropertyKey에 올바르게 다시 쓰는 방법을 모르겠습니다 (JSON에 배열과 같은 객체가 없기 때문에 - 그 자체로 또는 그와 비슷한 배열입니다).