gpt4 book ai didi

objective-c - 如何检查传入的 JSON feed 是否包含单个或多个记录?

转载 作者:行者123 更新时间:2023-11-29 04:15:56 25 4
gpt4 key购买 nike

我必须在 iOS 上解析此 JSON。

{
"log_by_dates": {
"logs": [
{
"date": "Wednesday 5 December 2012",
"exercises": "0",
"workouts": "0",
"log_entries": "0"
},
{
"date": "Tuesday 4 December 2012",
"exercises": "4",
"workouts": "2",
"log_entries": "7"
}
]
}
}

我编写了以下代码来解析它;

NSArray *logs = [[(NSDictionary*)results objectForKey:@"log_by_dates"] objectForKey:@"logs"];
for (NSDictionary *aLog in logs) {
Log *newLog = [[Log alloc] initWithDate:[aLog objectForKey:@"date"] withExercises:[aLog objectForKey:@"exercises"]
withWorkouts:[aLog objectForKey:@"workouts"]];
if (!data) {
data = [[NSMutableArray alloc] init];
}

但问题是,有时我会得到这样的 JSON 值;

{

"log_by_dates": {
"logs":
{
"date": "Wednesday 5 December 2012",
"exercises": "0",
"workouts": "0",
"log_entries": "0"
}
}
}

这使得我的代码崩溃。

请指导我,在解析之前我使用哪个 if() else 条件来检查传入的 JSON 对象是否包含单个记录的多个记录,以便我编写适当的代码来处理字典或数组。谢谢,

最佳答案

请像这样更新您的代码。

NSArray *logs = [[(NSDictionary*)results objectForKey:@"log_by_dates"] objectForKey:@"logs"];
if([logs isKindOfClass:[NSArray class]]) {
for (NSDictionary *aLog in logs) {
Log *newLog = [[Log alloc] initWithDate:[aLog objectForKey:@"date"] withExercises:[aLog objectForKey:@"exercises"]
withWorkouts:[aLog objectForKey:@"workouts"]];
if (!data) {
data = [[NSMutableArray alloc] init];
}
}
}
else if([logs isKindOfClass:[NSDictionary class]]) {
NSDictionary *aLog = (NSDictionary *)logs;
Log *newLog = [[Log alloc] initWithDate:[aLog objectForKey:@"date"] withExercises:[aLog objectForKey:@"exercises"]
withWorkouts:[aLog objectForKey:@"workouts"]];
if (!data) {
data = [[NSMutableArray alloc] init];
}
}

关于objective-c - 如何检查传入的 JSON feed 是否包含单个或多个记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717806/

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