2012-01-13 83 views
0

JSON數據發佈iPhone

[{"identity":"DEMO","assets":[{"identity":"34DL3611","systemId":"544507"},{"identity":"34GF0512","systemId":"5290211"},{"identity":"34HH1734","systemId":"111463609"},{"identity":"34HH1736","systemId":"111463622"},{"identity":"34YCJ15","systemId":"294151155"}],"systemId":4921244}] 

我使用這種方法來獲得資產值的身份(「資產」正從JSON Web服務這樣的數據:[{「身份」:「34DL3611」 ,「systemId」:「544507」}):

vehicleList = [dict objectForKey: @"assets"]; 

    self.listVehicles = [[NSMutableArray alloc] init]; 

for (NSUInteger index = 0; index < [vehicleList count]; index++) { 

    itemDict = [vehicleList objectAtIndex: index]; 

    [self.listVehicles addObject:[itemDict objectForKey:@"identity"]]; 
} 

如何獲取systemId值...?

我已經嘗試了本作的systenId

vehicleListID = [dict objectForKey:@"systemId"]; 

    self.listVehiclesID =[[NSMutableArray alloc]init]; 

for (NSUInteger index = 0; index < [vehicleListID count]; index++) { 

    assetsIdDict = [vehicleListID objectAtIndex: index]; 

    [self.listVehiclesID addObject:[assetsIdDict objectForKey:@"systemId"]]; 
} 

,但得到的錯誤:[__NSCFNumber計數]:無法識別的選擇發送到實例0x784c730

+1

相同的方式..'[itemDict objectForKey:@「systemId」]'..爲了在數組中,你需要初始化新的NSMutableArray。 – Ilanchezhian 2012-01-13 12:30:47

+0

我已經嘗試過,但它給錯誤:[__ NSCFNumber計數]:無法識別的選擇器發送到實例0x784c730 – 2012-01-13 12:34:17

+0

看到編輯的部分.. – 2012-01-13 12:52:30

回答

0

你得到的json響應是一個數組。 vehicleList應該是json響應的objectatIndex 0。

NSDictionary *vehicleList = [[arrayLoadedFromJson objectAtIndex:0] objectForKey: @"assets"]; 


vehicleList = [dict objectForKey: @"assets"]; 

    self.listVehicles = [[NSMutableArray alloc] init]; 

for (NSUInteger index = 0; index < [vehicleList count]; index++) { 

    itemDict = [vehicleList objectAtIndex: index]; 

    [self.listVehicles addObject:[itemDict objectForKey:@"identity"]]; 

    [self.listVehicles addObject:[itemDict objectForKey:@"systemId"]]; 

} 

這個你必須插入:-in代碼

[self.listVehicles addObject:[itemDict objectForKey:@"systemId"]]; 
+0

thanx Anil ... :)它的工作 – 2012-01-13 12:53:21

+0

沒關係...給thx stackOverflow。 – 2012-01-13 12:54:32

+0

YAH你好!謝謝DuDe StackOverFlow :) – 2012-01-13 12:56:31

2

你基本上差不多了。你只是想這可能:

NSString *systemId = [itemDict objectForKey:@"systemId"]; 

關於此代碼有:

vehicleListID = [dict objectForKey:@"systemId"]; 

    self.listVehiclesID =[[NSMutableArray alloc]init]; 

for (NSUInteger index = 0; index < [vehicleListID count]; index++) { 

    assetsIdDict = [vehicleListID objectAtIndex: index]; 

    [self.listVehiclesID addObject:[assetsIdDict objectForKey:@"systemId"]]; 
} 

...好,這只是完全錯誤的。這是返回NSNumber,在你的例子JSON是4921244在JSON字符串的末尾。然後你打電話給count,但它不是一個數組,所以它崩潰了。

如果你想獲得的所有值指出,JSON,你可以使用這個的:

NSNumber *outerIdentity = [dict objectForKey:@"identity"]; 
NSNumber *outerSystemId = [dict objectForKey:@"systemId"]; 
NSArray *vehicleList = [dict objectForKey:@"assets"]; 
for (NSUInteger index = 0; index < [vehicleList count]; index++) { 
    NSDictionary *itemDict = [vehicleList objectAtIndex: index]; 
    NSString *identity = [itemDict objectForKey:@"identity"]; 
    NSString *systemId = [itemDict objectForKey:@"systemId"]; 
} 

然後做什麼是你想要的所有這些對象做。

0

對於於具有單獨的數組,你需要初始化新的NSMutableArray並添加對象。

否則,更好的辦法是,用2個NSString成員聲明一個新類,identitysystemId。從JSON中提取值並分配給類成員。並將該對象添加到數組中。