用AFNetworking解析JSON给圆括号带来的结果
问题描述:
这里是简化的JSON文件,我需要从网络服务下载它并在表中解析结果!用AFNetworking解析JSON给圆括号带来的结果
编辑:我现在提供更精确的代码,通过在线工具清理和格式化:
{
"main": [
{
"id": 0, <--- float value
"type": "type0", <--- STRING value
"valueA": {
"valueA1": 1, <--- float value
"valueA2": 2, <--- float value
"valueA3": 3 <--- float value
},
"valueB": {
"valueB1": 1, <--- float value
"valueB2": 2 <--- float value
},
"valueC": [
{
"valueC1": "string0C1", <--- STRING value
"valueC2": 2, <--- float value
"valueC3": 3, <--- float value
}
]
},
通过在线工具jsonviewer.stack.hu FORMATTED:
我需要用AFJSONRequestOperation解析它,然后我写下这段代码:
NSMutableArray *main = [JSON objectForKey:@"main"];
arrayID = [main valueForKey:@"id"];
arrayType = [main valueForKey:@"type"];
NSMutableArray *arrayValueC = [main valueForKey:@"valueC"];
NSMutableString *stringC1 = [arrayValueC valueForKey:@"valueC1"];
// I CANT USE objectForKey, XCode give an exception -[__NSArrayI objectForKey:]: unrecognized selector sent to instance
NSLog(@"id: %@",arrayID);
NSLog(@"type: %@",arrayType);
NSLog(@"string: %@",stringC1);
当我分析,我得到这个结果从NSLog的:
id: (
0,
1,
2,
3,
4,
5,
6,
7,
8,
9
)
type: (
type0,
type1,
type2,
type3,
type4,
type5,
type6,
type7,
type8,
type9
)
string: (
(
"string0C1"
),
(
"string2C1"
),
(
"string2C1"
),
(
"string3C1"
),
(
"string4C1"
),
(
"string5C1"
),
(
"string6C1"
),
(
"string7C1"
),
(
"string8C1"
),
(
"string9C1"
)
)
就像你看到的一切完美,我可以推断ID(浮动)和TYPE(串)的每一个值,但我讨厌圆在valueC1字符串的每个对象中都有括号:我怎样才能得到没有括号和引号的干净的值C1?请如果你能提供一些代码。谢谢!
答
请勿使用valueForKey:
。改为使用objectForKey:
。这可能是主要问题。当arrayValueA
访问
下面包含将显现出来的问题在第一时间::但是,一旦你使用它,你可能会遇到新的问题
NSMutableArray *arrayValueA = [arrayMain objectForKey:@"valueA"];
储存在valueA
元素是一个对象,即一个字典而不是一个数组。
最后,您的简化了无论如何JSON无效。几个值缺失双引号,例如:
"id": id0
应该是:
"id": "id0"
您更好地展示真实的JSON数据和真正的代码。
更新:
你应该可以用下面的代码来访问JSON数据:
NSArray *main = [JSON objectForKey:@"main"];
NSDictionary* main0 = [main objectAtIndex:0];
arrayID = [main0 objectForKey:@"id"];
arrayType = [main0 objectForKey:@"type"];
NSArray *arrayValueC = [main objectForKey:@"valueC"];
NSDictionary *elem0 = [arrayValueC objectAtIndex:0];
NSString *stringC1 = [arrayValueC objectForKey:@"valueC1"];
NSLog(@"id: %@",arrayID);
NSLog(@"type: %@",arrayType);
NSLog(@"string: %@",stringC1);
感谢科多,但它不是我的JSON,我需要从网上下载它,并解析;我用在线工具格式化了这些结果。我现在编辑我的问题,以提供更精确和更清晰的代码:objectForKey给我一个例外。请你能帮助我吗? – Huxley
@Huxley:感谢你的例外。他们告诉你你在哪里铸造了一个错误类型的对象。目前,实际上对象是* NSDictionary *,* NSArray *和* NSString *实例时,您使用* NSMutableDictionary *,* NSMutableArray *和* NSMutableString *。 – Codo
很抱歉,我很感激这个例外。但即使使用NSDictionary,NSArray和NSString在NSMutable的地方...我得到同样的错误:无法识别的选择器。而且,对于数组和字典的所有组合,对于循环和键值,我实际上看不到括号和引号从“valueC1”字符串中消失。也许我需要一些代码来识别确切的问题。 – Huxley