我正在尝试使用json-framework和obj-C
来阅读以下json对象{
Sections = {
Now = "Wednesday 9 February 2011 02:40";
Section = (
{
Article = (
{
Exceprt = "text here";
ID = 49011;
Title = "text here";
Type = Politics;
audioCounter = 0;
commentsCounter = 0;
hasMore = false;
important = False;
likesCounter = 0;
photoCounter = 0;
time = "21:12";
timeStamp = "2/8/2011 9:14:16 PM";
timeStatus = True;
videoCounter = 0;
viewsCounter = 0;
},
{
Exceprt = "text here";
ID = 49010;
Title = "text here";
Type = Politics;
audioCounter = 0;
commentsCounter = 0;
hasMore = false;
important = True;
likesCounter = 0;
photoCounter = 0;
time = "20:45";
timeStamp = "2/8/2011 9:10:59 PM";
timeStatus = True;
videoCounter = 0;
viewsCounter = 0;
},
{
Exceprt = "text here";
ID = 49008;
Title = "text here";
Type = Politics;
audioCounter = 0;
commentsCounter = 0;
hasMore = false;
important = False;
likesCounter = 0;
photoCounter = 0;
time = "20:28";
timeStamp = "2/8/2011 9:09:44 PM";
timeStatus = True;
videoCounter = 0;
viewsCounter = 0;
}
);
ID = 22;
Name = "EN Live";
totalNews = 3416;
}
);
};
}
我的目的是要有一个文章列表(词典列表),以便我以后可以轻松访问它们。我已经停留了一段时间,我的代码给了我一个关于为NSArray调用一个不存在的方法的错误,这让我怀疑我误解了json对象。我对此非常陌生,非常感谢任何帮助。
这是我的代码:
NSDictionary *results = [jsonString JSONValue];
NSDictionary *Articles = [[results objectForKey:@"Sections"] objectForKey:@"Section"];
NSArray *ListOfArticles = [Articles objectForKey:@"Article"];
for (NSDictionary *article in ListOfArticles)
{
NSString *title = [article objectForKey:@"Title"];
NSLog(title);
}
谢谢!
答案 0 :(得分:1)
首先,那些不是有效的JSON数据。名称(名称/值对)是字符串,必须引用。必须始终引用字符串值。布尔值必须为true
或false
(小写)。查看http://json.org/和http://www.ietf.org/rfc/rfc4627.txt?number=4627以及http://jsonlint.com
以下是您的数据结构:
Sections
的名称(键),其值本身就是另一个对象(字典)Sections
有一个名为Section
的名称(密钥),其值为数组Section
数组中的每个元素都是一个对象(字典)Section
数组中的每个元素都有一个名为Article
的名称(键),其值为数组,以及其他名称(键):ID
,{{1} },title
totalNews
数组中的每个元素都是一个对象如果您的JSON数据有效,您可以按如下方式解析它们:
Article
答案 1 :(得分:0)
您的JSON框架可能正在解析您期望NSArray的NSDictionary。它允许您将NSDictionary分配给NSArray,但是当您尝试在“数组”上调用方法时,您将获得运行时异常。根据您发布的JSON(这是不正确的JSON)判断,这就是我的解析代码的样子。 NSDictionaries和NSArrays的名称只是以它们代表的JSON属性命名。
NSDictionary* results = [jsonString JSONValue];
NSDictionary* sections = [results valueForKey:@"Sections"];
NSArray* section = [sections valueForKey:@"Section"];
NSArray article = [[section objectAtIndex:0] valueForKey:@"Article"];
for (NSDictionary* anArticle in article) {
NSLog(@"%@", [anArticle valueForKey:@"Title"]);
}