【问题标题】:Parsing json having multiple arrays解析具有多个数组的json
【发布时间】:2015-04-22 11:08:30
【问题描述】:

我在我的代码中使用JSON 解析。我尝试了很多,但无法弄清楚出了什么问题。

这是我的JSON 回复

[{

    "order": {
        "transaction_id": "bFnRjTPYfD",
        "status": 0,
        "created_at": "2015-04-22 09:35:35"
    }

}, {

    "order_items": [{
        "item_id": 1,
        "item_name": "Potato",
        "item_description": null,
        "item_salesprice": 14,
        "item_imagepath": "\/uploads\/veggies\/potato.jpg",
        "order_quantity": "4 Kg",
        "order_price": 69.99
    }, {

        "item_id": 2,
        "item_name": "Tomato",
        "item_description": null,
        "item_salesprice": 18,
        "item_imagepath": "\/uploads\/veggies\/tomato.jpg",
        "order_quantity": "6 Kg",
        "order_price": 79.99
    }]

}]

我想提取交易 ID 和项目名称。你能帮我解决这个问题吗?

更新答案:

NSDictionary *Order=[JSONData ValueForKey:@"Order"]; 

NSString *transaction_id=[Order ValueForKey:@"Transaction_id"]; 

【问题讨论】:

  • 很高兴看到你的一些尝试,这样我们可以更好地帮助你。
  • @user3659166 请试试我的回答。
  • 请尝试一下,然后发布您的问题。而不是发布 JSON 日志并要求其他人解析 JSON..!
  • 您作为答案添加的代码将崩溃。
  • @user3659166 嘿......每个人都想帮助你,所以你为什么不接受任何答案。如果您对答案不满意,请告诉我。会更新的。

标签: ios objective-c json nsstring nsdictionary


【解决方案1】:

你可以通过这种方式获得transaction_id

NSDictionary *OrderJson=[jsonArray objectAtIndex:0];
NSDictionary *OrderDic = [OrderJson valueForKey:@"order"];
NSString *transactionId=[OrderDic objectForKey:@"transaction_id"];

ItemNames在数组中,你可以通过for循环或者谓词来获取,这里我用for给你看

NSDictionary *order_itemsJson=[jsonArray objectAtIndex:1];
NSArray *item=[order_itemsJson objectForKey:@"order_items"];
for (NSDictionary *dic in item) {
    NSLog(@"%@",[dic valueForKey:@"item_name"]);
}

享受编码!

【讨论】:

  • 你甚至都不知道,我在说什么,是吗?
  • @vikingosegundo 在本次会议中进行了长时间的交谈后,我意识到您想要解释其他内容。让我们想出一些东西,这样我们就可以学到更多。请解释一下你真正想告诉别人什么......谢谢
  • 有数百个关于它的问题和答案。只需搜索即可。
【解决方案2】:

做以下事情,你会得到输出。

    NSString* transectionId = [[[arrayResponse objectAtIndex:0] valueForKey:@"order"] valueForKey:@"transaction_id"];

    NSLog(@"transectionId : %@",transectionId);

    NSArray* arrayInner = [[arrayResponse objectAtIndex:1] valueForKey:@"order_items"];
    for (int i=0; i<arrayInner.count; i++) {

        NSDictionary* dictInner = [arrayInner objectAtIndex:i];

        NSString* itemName = [dictInner valueForKey:@"item_name"];

        NSLog(@"Item Name : %@",itemName);
    }

在这里你会得到transaction_iditem_name

希望对您有所帮助。

【讨论】:

  • @vikingosegundo,我们一般都是用KVC来访问objective-c中的值。不知道你在找什么。
  • 为什么要使用 KVC 方法而不是正确的字典方法?
  • @vikingosegundo,意思是你在学习基本的objective-c语法吗?像数组[0]。
  • 不,我不是在谈论订阅。是时候了解 KVC 了。
  • 是的,我知道,但在使用前由开发人员提供验证。我在这里提供他所期望的答案。天气我的回答就像或不取决于他们。
【解决方案3】:

试试看.. 交易 id..

NSDictionary *Order=[JSONData ObjectForKey:@"Order"]; 

NSString *transaction_id=[Order ValueForKey:@"Transaction_id"]; 

对于 item_id 试试,...

NSDictionary *item=[JSONData objectForKey:@"order_items"]; 

NSArray *item_id=[Order ValueForKey:@"item_name"];

【讨论】:

  • 评论不用于扩展讨论;这个对话是moved to chat
  • 无意开始聊天:此代码将因错误的方法名称和使用 KVC 方法而崩溃,或者使用正确的 NSDictionaries 方法会产生意外行为。
猜你喜欢
  • 2016-10-11
  • 1970-01-01
  • 2017-04-10
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
相关资源
最近更新 更多