我試圖解析此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