解析 JSON 个对象错误
Parsing JSON objects error
我有这个JSON。
{
"cnt": 1,
"list": [
{
"object1": [
{
"subobject1": "value1",
"subobject2": "value2",
"subobject3": "value3"
}
],
"object2": {
"subobject1": value1,
"subobject1": value2,
"subobject1": value3
}
}
]
}
我无法从第一个对象获取数据。我收到一个错误
-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fa281f82520
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fa281f82520'
对于另一个对象,我获取了数据并且可以在 NSLOG 中看到它,但不明白第一个对象有什么问题以及应用崩溃的原因。
这就是我在 DataModel
中解析 json 的方式
NSError *deserializationError;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &deserializationError];
NSArray * responseArr = json[@"list"];
NSMutableArray *result = [[NSMutableArray alloc] init];
if(responseArr && [responseArr isKindOfClass:[NSArray class]]) {
for(NSDictionary *cDictionary in responseArr) {
DAObject *cty = [[DAObject alloc] initWithDictionary:ctyDictionary];
if(cty) {
[result addObject:cty];
}
}
}
然后在对象 .m 文件中
DAServiceObject *object1 = [[DAServiceObject alloc] initWithDictionary:dictionary[@"object1"]];
self.value1 = object1.value1;
self.value2 = object1.value2;
应用程序崩溃。
您的 JSON 数据不是数组。它是一本字典。这是一本字典,一键 "cnt" 和一键 "list"。键 "list" 下的对象是一个数组。
您误解了数据结构:"list" 包含一个只有一项的数组,即字典。该字典包含每个键的数组(例如 "item1"),同样只有一个项目(又是一个字典)。
编辑
// ...
if(responseArr && [responseArr isKindOfClass:[NSArray class]]) {
NSDictionary *content = responseArr[0];
for (NSSString *key in [content allKeys]) {
NSDictionary *a = content[key][0];
// ...
}
}
我有这个JSON。
{
"cnt": 1,
"list": [
{
"object1": [
{
"subobject1": "value1",
"subobject2": "value2",
"subobject3": "value3"
}
],
"object2": {
"subobject1": value1,
"subobject1": value2,
"subobject1": value3
}
}
]
}
我无法从第一个对象获取数据。我收到一个错误
-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fa281f82520
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fa281f82520'
对于另一个对象,我获取了数据并且可以在 NSLOG 中看到它,但不明白第一个对象有什么问题以及应用崩溃的原因。
这就是我在 DataModel
中解析 json 的方式NSError *deserializationError;
NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &deserializationError];
NSArray * responseArr = json[@"list"];
NSMutableArray *result = [[NSMutableArray alloc] init];
if(responseArr && [responseArr isKindOfClass:[NSArray class]]) {
for(NSDictionary *cDictionary in responseArr) {
DAObject *cty = [[DAObject alloc] initWithDictionary:ctyDictionary];
if(cty) {
[result addObject:cty];
}
}
}
然后在对象 .m 文件中
DAServiceObject *object1 = [[DAServiceObject alloc] initWithDictionary:dictionary[@"object1"]];
self.value1 = object1.value1;
self.value2 = object1.value2;
应用程序崩溃。
您的 JSON 数据不是数组。它是一本字典。这是一本字典,一键 "cnt" 和一键 "list"。键 "list" 下的对象是一个数组。
您误解了数据结构:"list" 包含一个只有一项的数组,即字典。该字典包含每个键的数组(例如 "item1"),同样只有一个项目(又是一个字典)。
编辑
// ...
if(responseArr && [responseArr isKindOfClass:[NSArray class]]) {
NSDictionary *content = responseArr[0];
for (NSSString *key in [content allKeys]) {
NSDictionary *a = content[key][0];
// ...
}
}