您好我有这个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中的值
有没有更简单的方法来删除这个或任何其他方式,以便我可以获取名称和值等值并将它们存储在数组中。
提前致谢
答案 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
}
}