在 json 数据中添加 InvoicID 新键和值
add InvoicID new key and value in json data
这是我的 json 数据 http://pastie.org/10988178 我想特别添加发票 ID item.like 如果一张发票有 3 个项目而不是每个项目数组添加特定的 InvoiceID
"ItemDetails":[
{
"ItemId":1,
"ItemType":1,
"InvoiceDetailId":1,
"UPC":"UPCCODE1",
"SKU":"Item 1",
"Description":"Item Description",
"Qty":12,
"PunchListPart":"Item Part New if return item",
"Comment":"Comment1",
"BarCode":""
"InvoiceId":95
},
我想要这样的输出
这是我的代码,但不起作用
NSLog(@"item=%lu",[[ret_val valueForKey:@"ItemDetails" ] count]);
NSArray *testarray=[ret_val valueForKey:@"ItemDetails" ];
NSMutableArray *item=[[NSMutableArray alloc]init];
for(int i=0; i<[[ret_val valueForKey:@"ItemDetails" ] count]; i++) {
NSMutableDictionary *dictValues = [NSMutableDictionary dictionaryWithDictionary:testarray[i]];
[dictValues setValue:[[ret_val objectForKey:@"InvoiceId"] objectAtIndex:i] forKey:@"InvoiceId"];
[item addObject:dictValues];
}
NSLog(@"item=%@",item);
ret_val 是我在所有 json 数据中的 NSMutableDictionary。
问题是 ret_val
是你的根 JSON
Dictionary
而你想要 InvoiceId
在你的 [=11] 的 data
数组中=]字典。因此,您需要使用 dataArray 访问它,您也可以使用 for each
循环减少代码。
NSMutableArray *items = [[NSMutableArray alloc] init];
NSArray *dataArray = [ret_val objectForKey:@"data"];
for (NSDictionary *dic in dataArray) {
//Now loop through the `ItemDetails` array.
NSArray *itemDetails = [dic objectForKey:@"ItemDetails"];
for (NSDictionary *itemDic in itemDetails) {
NSMutableDictionary *dictValues = [NSMutableDictionary dictionaryWithDictionary:itemDic];
[dictValues setValue:[dic objectForKey:@"InvoiceId"] forKey:@"InvoiceId"];
[items addObject:dictValues];
}
}
NSLog(@"%@", items)
您似乎遇到了异常,请检查 Nirav 代码,如下所示。
if([NSNull null] != [dic objectForKey:@"ItemDetails"])
NSDictionary 不允许值为 nil,因此它们被存储为 null。
这就是为什么我建议进行空检查。
希望有用。
这是我的 json 数据 http://pastie.org/10988178 我想特别添加发票 ID item.like 如果一张发票有 3 个项目而不是每个项目数组添加特定的 InvoiceID
"ItemDetails":[
{
"ItemId":1,
"ItemType":1,
"InvoiceDetailId":1,
"UPC":"UPCCODE1",
"SKU":"Item 1",
"Description":"Item Description",
"Qty":12,
"PunchListPart":"Item Part New if return item",
"Comment":"Comment1",
"BarCode":""
"InvoiceId":95
},
我想要这样的输出
这是我的代码,但不起作用
NSLog(@"item=%lu",[[ret_val valueForKey:@"ItemDetails" ] count]);
NSArray *testarray=[ret_val valueForKey:@"ItemDetails" ];
NSMutableArray *item=[[NSMutableArray alloc]init];
for(int i=0; i<[[ret_val valueForKey:@"ItemDetails" ] count]; i++) {
NSMutableDictionary *dictValues = [NSMutableDictionary dictionaryWithDictionary:testarray[i]];
[dictValues setValue:[[ret_val objectForKey:@"InvoiceId"] objectAtIndex:i] forKey:@"InvoiceId"];
[item addObject:dictValues];
}
NSLog(@"item=%@",item);
ret_val 是我在所有 json 数据中的 NSMutableDictionary。
问题是 ret_val
是你的根 JSON
Dictionary
而你想要 InvoiceId
在你的 [=11] 的 data
数组中=]字典。因此,您需要使用 dataArray 访问它,您也可以使用 for each
循环减少代码。
NSMutableArray *items = [[NSMutableArray alloc] init];
NSArray *dataArray = [ret_val objectForKey:@"data"];
for (NSDictionary *dic in dataArray) {
//Now loop through the `ItemDetails` array.
NSArray *itemDetails = [dic objectForKey:@"ItemDetails"];
for (NSDictionary *itemDic in itemDetails) {
NSMutableDictionary *dictValues = [NSMutableDictionary dictionaryWithDictionary:itemDic];
[dictValues setValue:[dic objectForKey:@"InvoiceId"] forKey:@"InvoiceId"];
[items addObject:dictValues];
}
}
NSLog(@"%@", items)
您似乎遇到了异常,请检查 Nirav 代码,如下所示。
if([NSNull null] != [dic objectForKey:@"ItemDetails"])
NSDictionary 不允许值为 nil,因此它们被存储为 null。 这就是为什么我建议进行空检查。
希望有用。