【问题标题】:Importing JSON objects into NSArray将 JSON 对象导入 NSArray
【发布时间】:2012-04-03 11:15:45
【问题描述】:

尝试在 Objective-C 中解析这个 JSON 对象并用这些对象创建一个 NSArray。 第一个值是一个计数器,是特定于对象的。所有其他值都是唯一的。

{ "myData": [
["1","1","110","dollar","8.0","2.8","0.1","11.6"],
["2","1","110","euro","4.0","3.2","1.5","4.4"],
["3","1","120","rupier","6.0","2.9","1.3","10.8"],
["4","1","120","dinero","4.0","3.3","1.5","4.4"],
["5","2","130","drahmer","8.0","2.9","1.3","11.2"],
] }

试过这段代码:

 NSDictionary* json = [NSJSONSerialization 
                          JSONObjectWithData:myData
                          options:kNilOptions 
                          error:&error];

    NSArray *currencyInformation = [json objectForKey:@"myData"];

但对象不存在。虽然数组的计数是 5。

【问题讨论】:

  • 如果 [array count] 是 5 如预期的那样,对象 那里。你怎么知道他们不是?
  • 无法从数组中读取它们。因为他们没有任何价值的描述,即。 "currency": "dollar" 我还没准备好...
  • currency 在哪里?我在 JSON 中根本看不到这一点。向我们展示您如何访问数组中的值。 (提示:他们自己将是NSArrays)。
  • @mattjgalloway:你明白了。每一行都是它自身的一个数组。当像数组一样处理它时,它解决了这个问题。谢谢。
  • @linge - 我已经添加了一个答案来说明:-)。很高兴它有帮助。

标签: objective-c ios json nsarray


【解决方案1】:

数组中的每个对象本身就是一个数组,所以:

NSDictionary* json = [NSJSONSerialization 
                      JSONObjectWithData:myData
                      options:kNilOptions 
                      error:&error];

NSArray *currencyInformation = [json objectForKey:@"myData"];

for (NSArray *info in currencyInformation) {
    // Then access each "column" with [info objectAtIndex:0,1,2,3,...]
}

【讨论】:

    【解决方案2】:

    在此数据结构中,您需要通过索引来访问事物,例如

    for (NSArray *currency in currencyInformation) {
        NSLog(@"Currency: %@", [currency objectAtIndex:3]);
    }
    

    如果您想通过键访问事物,那么您需要更改 JSON 以使用对象数组而不是数组数组。像这样的:

    { 
        "myData": [
            {
                "primaryKey" : 1,
                "currency"   : "dollar",
                <other keys + values>...
            },
        ]
    }
    

    在这种情况下,您现在可以执行以下操作:

    for (NSDictionary *currency in currencyInformation) {
        NSLog(@"Currency: %@", [currency valueForKey:@"currency"]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2011-01-24
      • 2015-11-10
      相关资源
      最近更新 更多