JSON数据问题iPhone



我从JSON web服务获取这些数据

[{"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}]

我使用此方法获取标识的资产值("assets":[{"identity":"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值?

我已经为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"]];
}

但获取错误:[__NSCFNumber count]:无法识别的选择器发送到实例0x784c730

您基本上就到了。你可能只想要这个:

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中,它是位于JSON字符串末尾的4921244。然后对它调用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"];
}

然后对所有这些对象做你想做的任何事情。

您得到的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"]];
}

这个你必须插入:-在你的代码

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

为了在单独的数组中实现这一点,您需要初始化新的NSMutableArray并添加对象。

否则,更好的方法是声明一个具有2个NSString成员的新类,例如identitysystemId。从JSON中提取值并分配给类成员。并将该对象添加到数组中。

最新更新