Json得到一个参数无法访问iOS

时间:2012-10-14 14:36:59

标签: objective-c ios json

这是一个例子

{
"updated":1350213484,
"id":"http://www.google.com/reader/api/0/feed-finder?q\u003dProva\u0026output\u003djson",
"title":"Risultati di feed per \"Prova\"",
"self":[
{
"href":"http://www.google.com/reader/api/0/feed-finder?q\u003dProva\u0026output\u003djson"
}
],
"items":[
{
"title":"Home Page - La prova del cuoco",
"id":"http://www.laprovadelcuoco.rai.it/",
"updated":1350213485,
"feed":[
{
"href":"http://www.laprovadelcuoco.rai.it/dl/portali/site/page/Page-ffb545b4-9e72-41e5-866f-a465588c43fa-rss.html"
}
],
"alternate":[
{
"href":"http://www.laprovadelcuoco.rai.it/",
"type":"text/html"
}
],
"content":{
"direction":"ltr",
"content":"Diventa un cuoco provetto con “La Prova del Cuoco”: le videoricette in un' applicazione di facile e veloce consultazione per il tuo Iphone. Scopri come acquistare ..."
}
},
{
"title":"Le prove Invalsi di matematica e italiano",
"id":"http://online.scuola.zanichelli.it/quartaprova/",
"updated":1350213486,
"feed":[
{
"href":"http://online.scuola.zanichelli.it/quartaprova/feed/"
}
],
"alternate":[
{
"href":"http://online.scuola.zanichelli.it/quartaprova/",
"type":"text/html"
}
],
"content":{
"direction":"ltr",
"content":"Un sito Zanichelli dedicato alle prove Invalsi di italiano e matematica: esercitazioni, consigli, informazioni utili, novità, aggiornamenti e blog d'autore sulle prove ..."
}
},

如何获取Feed网址?

这就是我的工作

NSString *daParsare=[reader searchFeed:searchText];



NSArray *items = [[daParsare JSONValue] objectForKey:@"items"];

for (NSDictionary *item in items) {



    NSString *title = [item objectForKey:@"title"];
    NSString *feed = [item valueForKeyPath:@"feed.href"];


}
[tab reloadData];

标题一切正常,但当我尝试访问Feed参数时,我收到错误...

2 个答案:

答案 0 :(得分:1)

假设您的JSON对象名为jsonObject,您只需访问href元素即可。因此,在当前对象中,URL位于名为href的对象中,该对象是顶级名为feed的数组中的第一个(在本例中为唯一)元素:

NSString* urlString = jsonObject[@"feed"][0][@"href"];

您应该检查以确保如果feed存在,则在访问其中一个元素之前,它不是空数组。

答案 1 :(得分:0)

NSString *feed = [item valueForKeyPath:@"feed.href"];

是错误的,因为feed指的是一个数组,它再次包含一个字典。

NSString *feed = [[[item objectForKey:@"feed"] objectAtIndex:0] objectForKey:@"href"];

如果您使用的是现代Xcode,最后一行与Jason Cocos答案相同。

NSString* feed = item[@"feed"][0][@"href"];

此语法称为Object Subscription