我试图解析此JSON:JSON解析为一个对象
{
"GetMachineGroupsResult": {
"MachineGroups": [
{
"GroupCount": 1,
"GroupID": 101,
"GroupName": "Machine11"
},
{
"GroupCount": 6,
"GroupID": 201,
"GroupName": "Machine12"
},
{
"GroupCount": 1,
"GroupID": 301,
"GroupName": "Machine13"
},
{
"GroupCount": 1,
"GroupID": 501,
"GroupName": "Machine14"
},
{
"GroupCount": 7,
"GroupID": 701,
"GroupName": "Machine15"
},
{
"GroupCount": 1,
"GroupID": 901,
"GroupName": "Machine16"
},
{
"GroupCount": 1,
"GroupID": 1001,
"GroupName": "Machine17"
}
],
"Status": 0
}
}
向具备的属性GroupCount,组ID和组名创建的对象。
这里是我的代码:
if (request.responseStatusCode >= 200 && request.responseStatusCode < 300)
{
NSData *responseData = [request responseData];
NSError* error;
NSDictionary* jsonOverview = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSString *resultStatusString = jsonOverview[@"GetMachineOverviewResult"][@"Status"];
int resultStatus = [resultStatusString intValue];
NSDictionary *parsedObject = jsonOverview[@"GetMachineGroupsResult"];
NSMutableArray *groups = [[NSMutableArray alloc] init];
NSArray *results = [parsedObject valueForKey:@"MachineGroups"];
NSLog(@"Count %lu", (unsigned long)results.count); //results.count = 7
for (NSDictionary *parseDic in results) {
MachineGroupList *machinegrouplist = [[MachineGroupList alloc] init];
NSLog(@"%@", [parseDic class]);
NSLog(@"%@", parseDic);
for (NSString *key in parseDic) {
if ([machinegrouplist respondsToSelector:NSSelectorFromString(key)]) {
[machinegrouplist setValue:[parseDic valueForKey:key] forKey:key];
}
[groups addObject:machinegrouplist];
}
}
NSLog (@"GroupObjects %lu", (unsigned long)[groups count]); //groups count = 21
出于某种原因,我无法捉摸,它分析每个项目三次,我结束了21个对象,而不是7.我知道这将是一些简单的这里的专家之一,但我是新来的这一切,真的很感谢这里的帮助,谢谢。
编辑: 非常感谢,这里是它现在的样子,它的工作原理.. addobject是在错误的部分!
for (NSDictionary *parseDic in results)
{
MachineGroupList *machinegrouplist = [[MachineGroupList alloc] init];
NSLog(@"%@", [parseDic class]);
NSLog(@"%@", parseDic);
for (NSString *key in parseDic)
{
if ([machinegrouplist respondsToSelector:NSSelectorFromString(key)])
{
[machinegrouplist setValue:[parseDic valueForKey:key] forKey:key];
}
//[groups addObject:machinegrouplist];
}
[groups addObject:machinegrouplist];
}
NSLog (@"GroupObjects %lu", (unsigned long)[groups count]); //groups count = 7
将一个有用的'description'方法添加到'MachineGroupList'类中,然后记录'groups'数组,以便查看所有21个对象。这是否会给你任何有用的想法? – rmaddy
我已经登录了21个项目,它似乎是每个项目的三倍。每个对象都有三个属性..我收到了线索,但它不是为我点击! – user3524211
我也没有看到它。您只需在'result'中为每个值调用'addObject:'一次。您公布的代码是否是您的REAL ACTUAL代码? – rmaddy