遍历 JSON 数组(应用程序崩溃)
Iterate through JSON array (App Crashing)
我正在尝试通过 JSON 数组进行迭代以获取项目键和值。
这是我的 JSON 数组:
{
"ClientData": [{
"Name": "Michael"
}, {
"Last": "Ortiz"
}, {
"Phone": "5555555555"
}, {
"email": "test@gmail.com"
}],
"ClientAccess": [{
"T-Shirt": "YES"
}, {
"Meals": "NO"
}, {
"VIP": "YES"
}, {
"Registration Completed": "Pending"
}]
}
现在,我正在尝试遍历 "ClientData" 数组,但由于某种原因,应用程序因以下异常而崩溃:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKey:]: unrecognized selector sent to instance
这是我用来遍历 JSON 数组的代码:
NSDictionary* object = [NSJSONSerialization JSONObjectWithData:JSONData options:kNilOptions error:nil];
// Client Profile Data
NSDictionary *clientDataDict = [object objectForKey:@"ClientData"];
for (id item in clientDataDict)
{
[JSONUserData addObject:[clientDataDict objectForKey:item]];
}
当我没有将 JSON 数组中的每个项目都放在数组中时,这段代码工作正常。我这样做是为了在阵列上保持连续顺序。
有人能给我任何关于问题所在的指示吗?
谢谢!
ClientData
是一个数组——由方括号 []
表示——包含分别具有一对 key/value 的字典(一个相当笨重的结构)。
NSDictionary* object = [NSJSONSerialization JSONObjectWithData:JSONData options:kNilOptions error:nil];
// Client Profile Data
NSArray *clientDataArray = [object objectForKey:@"ClientData"];
for (NSDictionary *dict in clientDataArray) {
for (NSString *key in dict) {
[JSONUserData addObject:[dict objectForKey:key]];
}
}
根据您的 JSON 字符串,ClientData 似乎与一个数组配对,并且数组中的每个项目都是一个字典。因此,修改后的代码将如下所示:
NSMutableDictionary *mDict = [NSMutableDictionary new];
NSArray *array = [object objectForKey:@"ClientData"];
for (NSDictionary *item in array) {
[mDict addEntriesFromDictionary:item];
}
我正在尝试通过 JSON 数组进行迭代以获取项目键和值。
这是我的 JSON 数组:
{
"ClientData": [{
"Name": "Michael"
}, {
"Last": "Ortiz"
}, {
"Phone": "5555555555"
}, {
"email": "test@gmail.com"
}],
"ClientAccess": [{
"T-Shirt": "YES"
}, {
"Meals": "NO"
}, {
"VIP": "YES"
}, {
"Registration Completed": "Pending"
}]
}
现在,我正在尝试遍历 "ClientData" 数组,但由于某种原因,应用程序因以下异常而崩溃:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString objectForKey:]: unrecognized selector sent to instance
这是我用来遍历 JSON 数组的代码:
NSDictionary* object = [NSJSONSerialization JSONObjectWithData:JSONData options:kNilOptions error:nil];
// Client Profile Data
NSDictionary *clientDataDict = [object objectForKey:@"ClientData"];
for (id item in clientDataDict)
{
[JSONUserData addObject:[clientDataDict objectForKey:item]];
}
当我没有将 JSON 数组中的每个项目都放在数组中时,这段代码工作正常。我这样做是为了在阵列上保持连续顺序。
有人能给我任何关于问题所在的指示吗?
谢谢!
ClientData
是一个数组——由方括号 []
表示——包含分别具有一对 key/value 的字典(一个相当笨重的结构)。
NSDictionary* object = [NSJSONSerialization JSONObjectWithData:JSONData options:kNilOptions error:nil];
// Client Profile Data
NSArray *clientDataArray = [object objectForKey:@"ClientData"];
for (NSDictionary *dict in clientDataArray) {
for (NSString *key in dict) {
[JSONUserData addObject:[dict objectForKey:key]];
}
}
根据您的 JSON 字符串,ClientData 似乎与一个数组配对,并且数组中的每个项目都是一个字典。因此,修改后的代码将如下所示:
NSMutableDictionary *mDict = [NSMutableDictionary new];
NSArray *array = [object objectForKey:@"ClientData"];
for (NSDictionary *item in array) {
[mDict addEntriesFromDictionary:item];
}