遍历 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];
}