gpt4 book ai didi

ios - 尝试解析 iOS 项目的 restful web APS 返回的 json 数组

转载 作者:可可西里 更新时间:2023-11-01 03:58:24 24 4
gpt4 key购买 nike

我正在尝试解析由 RESTful Web API 返回的 JSON 数组,它看起来类似于以下内容(使用 jsonviewer,json 作为数组中的一堆字典返回):

[{
"date": "2011-03-21",
"meal": "BREAKFAST",
"category": "BREAKFAST BAKERY",
"recipe": "213012",
"name": "Aesops Bagels",
"portion": "1",
"unit": "each"},

我正在尝试获取“名称”信息,然后将其存储到 TableView 中。这是我用来完成该操作的代码:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSArray *allDataArray = [NSJSONSerialization JSONObjectWithData:webData
options:0
error:nil];

for (NSDictionary *diction in allDataArray) {
NSDictionary *menuItem = [diction objectForKey:@"menuItem"];
NSString *name = [menuItem objectForKey:@"name"];

[array addObject:name];
}

[[self MyTableView]reloadData];
}

我得到的错误是:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'

所以我很确定在 for 循环上面的行中发生了错误,这导致数组尝试将 nil 作为值。但是,如果您能帮助找出问题所在/如何成功解析此 json,我们将不胜感激。我对 json、xcode 和 iOS 都很陌生,所以如果我做了任何特别愚蠢的事情,我深表歉意。

最佳答案

您的 JSON 示例中实际上没有名为 menuItem 的项目。您的代码看起来是为解析 JSON 而编写的,如下所示:

[{ "menuItem" : { "name" : "Aesops Bagels",

}
},
]

即,它期望列表中每个字典中都有一个“menuItem”键。如果您实际上是在尝试解析您发布的代码片段,我认为您只需要从此简化您的循环代码:

NSDictionary *menuItem = [diction objectForKey:@"menuItem"];
NSString *name = [menuItem objectForKey:@"name"];

到:

NSString *name = [diction objectForKey:@"name"];

在尝试将名称添加到结果数组之前,您可能还想确保该名称不为 nil,以防万一您的数据中有一个条目缺少名称。

关于ios - 尝试解析 iOS 项目的 restful web APS 返回的 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13657613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com