如何在 Objective-C iOS 中解析 JSON

Posted

技术标签:

【中文标题】如何在 Objective-C iOS 中解析 JSON【英文标题】:How to parse JSON in objective-C iOS 【发布时间】:2016-09-14 10:12:01 【问题描述】:

我想使用 AFNetworking 库在 ios 的 Objective-C 中解析 JSON


  "success": 1,
  "row": [
    
      "amount": 2800
    
   ]

代码 -

 arrAmount = [responseObject valueForKey:@"row"];
 NSLog(@"%@",arrAmount);

 NSString *strAmount =[NSString stringWithFormat:@"%@", [arrAmount valueForKey:@"amount"]];

 self.lblAmount.text =[NSString stringWithFormat:@"%@",strAmount];

【问题讨论】:

【参考方案1】:

rowcontain 数组的响应不是字典,所以从数组的第一个对象访问量。

NSarray *arrAmount = [responseObject objectForKey:@"row"];
if arrAmount.count > 0 
    NSDictionary *dic = [arrAmount objectAtIndex:0];
    NSString *strAmount = [NSString stringWithFormat:@"%d", [dic objectForKey:@"amount"]];
    self.lblAmount.text = strAmount;

【讨论】:

【参考方案2】:

使用 NSDictionary:

NSDictionary *dict = [responseObject valueForKey:@"row"];
NSLog(@"value = %@",[dict valueForKey:@"amount"]);  // fetch amount value

array = [dict valueForKey:@"amount"];   // // fetch all amount value in array
NSLog(@"array = %@", array.description);

【讨论】:

这永远不会起作用,因为键 row 包含数组而不是字典。 @NiravD 很高兴得到您的关注,但这会起作用 :)) 你能解释一下吗? 我认为( ) 标志信号节点是一个数组而不是[ ],我在您的消息后检查了.. 它可以使用,但我确信它是数组,也可以使用 arrAmount 作为 var 名称,表明它是数组。【参考方案3】:

使用objectForKey 代替valueForKey

NSDictionary *responseObject;
NSArray *arrAmount;
arrAmount = [responseObject objectForKey:@"row"];
NSLog(@"%@",arrAmount);
NSString *strAmount =[NSString stringWithFormat:@"%@", [[arrAmount objectAtIndex:0] objectForKey:@"amount"]];

【讨论】:

以上是关于如何在 Objective-C iOS 中解析 JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS(Objective-C)中有效地解析 JSON 到 Realm DB

如何在 iOS 上使用 Objective-C 触发按需 ***

iOS JSON解析Objective-C并传递POST方法参数

如何在 iOS 中解析复杂的 JSON 数据

Objective-C04-第一个OC程序解析

在 iOS Objective-C 中使用 JSON 数据创建动态表单