【问题标题】:how to parse array of objects using json for iphone如何使用 json for iphone 解析对象数组
【发布时间】:2011-06-25 18:04:46
【问题描述】:

我在从 JSON 结果解析对象数组时遇到问题。

[
    {
        "first_name":"vijay",
        "last_name":"last",
        "creditCardNumber":"178978977779787979",
        "month":"02","year":"2012",
        "address":"Addres2"
    }

    { 
        "first_name":"vijay",
        "last_name":"last",
        "creditCardNumber":"178978977779787979",
        "month":"02","year":"2012",
        "address":"Addres2"
    }

    {
        "first_name":"vijay",
        "last_name":"last",
        "creditCardNumber":"178978977779787979",
        "month":"02","year":"2012",
        "address":"Addres2"
    }
]

我希望从数组中的所有对象中提取creditCardNumber 值。

【问题讨论】:

  • 您的 JSON 数据无效:数组中的值必须用逗号分隔。至于解析 JSON,有几个可能的库:JSONKit、SBJSON、TouchJSON、yajl-objc。
  • 小心那些信用卡dawg...

标签: iphone objective-c


【解决方案1】:

谷歌“JSON 框架”。按照(简单的)说明进行安装。

那就去吧:

//let's say there's NSString *jsonString.

NSArray *userData = [jsonString JSONValue];

NSMutableArray *creditCards = [NSMutableArray array];
for (NSDictionary *user in userData) {
    [creditCards addObject:[user objectForKey:@"creditCardNumber"]];
}

您将使用 NSMutableArray *creditCards 删除包含信用卡号的 NSString 对象的底部。

【讨论】:

  • 嗨,伙计,这正是我所需要的,你真的很棒。谢谢。可以解释一下。它是如何工作的。因为 www.json.org 指定 [ 表示数组 { 表示对象。我有一点困惑请.....
  • 您的 JSON 是一个对象数组。所以你在 Obj-C 中模仿它。 JSON 框架将解析 jsonString 并返回 JSON 顶层的任何类型的对象(在本例中为数组)。所以你在 NSArray 中捕获它。然后该 NSArray 的每个元素都是一个 NSDictionary,带有一个“creditCardNumber”字段。
【解决方案2】:

@Dan Ray 的回答是正确的,但是如果你想避免第三方库你可以使用NSJSONSerialization:

假设 NSData *responseData 包含您的 JSON。

NSArray *userData = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];

NSMutableArray *creditCards = [NSMutableArray array];
for (NSDictionary *user in userData) {
    [creditCards addObject:[user objectForKey:@"creditCardNumber"]];
}

来源:NSJSONSerialization

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2019-01-14
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2020-12-12
    相关资源
    最近更新 更多