如何使用JSON解析iPhone上的对象数组

6

我在解析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的值。


1
您的JSON数据无效:数组中的值必须用逗号分隔。至于解析JSON,有几个可能的库可供选择:JSONKit、SBJSON、TouchJSON、yajl-objc。 - user557219
4
小心那些信用卡,兄弟... - wfbarksdale
2个回答

8

请搜索“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"]];
}

你将会得到一个包含信用卡号码的NSString对象的NSMutableArray *creditCards。


嗨,伙计,这正是我所需要的,你真的太棒了。谢谢。能否请你解释一下那个是如何工作的?因为www.json.org指定 [ 表示数组,{ 表示对象。我有点困惑,请…… - rithik
你的JSON是一个对象数组。所以在Obj-C中模仿它。JSON框架将解析jsonString并返回JSON顶层的任何类型的对象(在这种情况下是一个数组)。因此,你可以在NSArray中捕获它。然后,该NSArray的每个元素都是一个NSDictionary,其中包含一个“creditCardNumber”字段。 - Dan Ray

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"]];
}

Source: NSJSONSerialization.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接