【问题标题】:Save JSon data in NSArray将 JSon 数据保存在 NSArray 中
【发布时间】:2012-03-26 07:19:32
【问题描述】:

我正在尝试保存一些特定的 JSon 数据并将它们存储在一个简单的 NSArray 中。

这是我拥有的 JSon:

products = {
    72 =     {
        value_a = "something1";
        value_b = "something2";
        value_c = "something3";
    };

    73 =     {
        value_a = "something1";
        value_b = "something2";
        value_c = "something3";
    };

    74 =     {
        value_a = "something1";
        value_b = "something2";
        value_c = "something3";
    };
    [etc]
}

这就是我在 NSMutableArray 中分配 JSon 数据的方式。

NSMutableArray *array = [json objectForKey:@"products"];

我需要的是存储,比方说,只是 value_b 每个孩子在一个数组中。有什么建议吗?

【问题讨论】:

    标签: xcode arrays json nsarray


    【解决方案1】:

    这里有一个包含键/值的字典,其中的值也是字典。如果你需要一个包含每个字典的数组,比如 value_b,你可以这样:

    NSDictionary *products = [json objectForKey:@"products"];
    NSMutableArray *b_values = [[NSMutableArray alloc] initWithCapacity:0];
    
    for (NSDictionary *product in [products allValues])
    {
      [b_values addObject:[product valueForKey:@"value_b"]];
    }
    
    // Now you have an array with all "value_b" objects
    

    【讨论】:

    • 谢谢!真的很感激。
    • 只是一个额外的问题,@Alladinian。我不总是有相同的名称(前面示例中的“value_b”)但不同的东西?假设 NSMutableArray 包含如下值/键:link 如何提取数据?
    • @aur0n 你的意思是有一种情况你不知道键的名字吗?因为如果您知道名称,只需执行 valueForKey:@"foo" (例如)就完成了...
    • 是的,我的意思是如果我不知道键的名称。
    • @aur0n 您发布的链接是字典而不是数组。在这种情况下,您将获得一个包含所有键(foo、bar、dunno...)的 NSArray:[products allKeys] 和一个包含所有值(13、9.8、9.8...)的 NSArray,其中:[products allValues] 假设当然,您将此信息存储在名为“产品”的 NSDictionary 中。另外你真的应该阅读苹果的documentation on Collections
    【解决方案2】:

    我不知道你在用什么,但我可以建议你使用SBJsonFramework

    这个套件有非常方便的方法来存储json数据。将所有 Json 数据存储在

    NSMutableDictionary

    然后对于每个对象,您可以使用 key 提取特定值并将它们存储在

    NSMutableArray

    【讨论】:

    • 嗨@hp iOS 封面,感谢您的快速回复。我正在使用 iOS 5 本机 JSon 函数,我认为我不需要使用您建议的框架,因为我在最后一段代码中分配的 NSMutableArray (我认为)已经由字典键组成,但我无法提取我需要的东西。你能帮我解决这个问题吗?
    • 如果您使用的是 NSJSONSerialization,我建议您检查您是否正确创建了 json 数据和 json 对象。 Bcoz 该类还具有具有方便返回类型的方法来相应地捕获数据在您的问题中,“产品”似乎是 json DATA & 72,73,73 是 json OBJECTS。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2011-08-03
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多