JSon用空对象键解析错误IOS

时间:2013-12-18 11:45:52

标签: ios iphone objective-c json

您好我有这个JSON我正在尝试使用NSDictionary解析并尝试获取所提到的值。但问题是当我进一步进入JSON时,我没有得到密钥有没有办法删除这个密钥以更深入。

NSDictionary *Allinfo = [json objectForKey:@"Collection"];//I go into "Collection"
    NSLog(@"All with response array: %@", Allinfo);
    NSDictionary *datainfo = [Allinfo objectForKey:@"contact"];//i go into "contact"

之后我得到了

Data : (
    {
    attributeList =         {
        attribute =             (
                            {
                name = "display-name";
                value = "tel:+";
            },
                            {
                name = capabilities;
                value = "TRANSFER";
            },
                            {
                name = relationship;
                value = ACCEPTED;
            }
        );
        resourceURL = "https://example.com";
    };
    contactId = "tel:+";
},
    {
    attributeList =         {
        attribute =             (
                            {
                name = "display-name";
                value = bob;
            },
                            {
                name = capabilities;
                value = "TRANSFER";
            },
                            {
                name = relationship;
                value = ACCEPTED;
            }
        );
        resourceURL = "https://example.com";
    };
    contactId = "tel:+";
}

这是从{和我没有得到下一个对象的键,以便我可以获取JSOn中的值

有没有更简单的方法来删除这个或任何其他方式,以便我可以获取名称和值等值并将它们存储在数组中。

提前致谢

3 个答案:

答案 0 :(得分:3)

你拥有所有人的钥匙。

事实上,你似乎对数组感到困惑,这是属性的一部分。

最外面的键是Data,其中包含数组。

对于您拥有的数组的每个对象:

第一个关键是attributeList& contactD

attribute键的值是3个值的数组。每个数组都包含键值对。密钥是name& value

答案 1 :(得分:1)

我不确定你从哪里得到[Allinfo objectForKey:@"contact"]。尝试解析如下..

NSDictionary *Allinfo = [json objectForKey:@"Collection"];
NSArray *dataArray = [Allinfo objectForKey:@"Data"];

for(NSDictionary *dic in dataArray)
{
    NSDictionary *attributeList=[dic objectForKey:@"attributeList"];
    NSArray *attributeArray=[attributeList objectForKey:@"attribute"];

    NSString *resourceURLString=[attributeList objectForKey:@"resourceURL"];
    NSString *contactIdString=[dic objectForKey:@"contactId"];

    for(NSDictionary *attributeDic in attributeArray)
    {
        NSString *nameString=[attributeDic objectForKey:@"name"];
        NSString *valueString=[attributeDic objectForKey:@"value"];
    }
}

答案 2 :(得分:0)

您可以使用以下方法

NSError *e = nil;
NSArray *itemArray = [NSJSONSerialization JSONObjectWithData:[response  dataUsingEncoding:NSUTF8StringEncoding] options: NSJSONReadingMutableContainers error: &e];


if (!itemArray) {
    NSLog(@"Error parsing JSON: %@", e);
} else {
    for(NSDictionary *item in itemArray) {
        //Your Data
    }

}
相关问题