我有示例JSON响应:
[
[],
{
"\u0000Data\u0000NewData": {
"id": "40",
"moreInfo": {
"Info1": "sth1",
"Info2": "sth2"
}
}
}
]
我想打印关键名称:
NSString *text = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSData *jsonData = [text dataUsingEncoding:NSUTF8StringEncoding];
NSError *e;
NSArray *dict = [NSJSONSerialization JSONObjectWithData:jsonData options: 0 error:&e];
NSDictionary *temp = [dict objectAtIndex: 1];
for(id key in temp)
NSLog(@" %@ --" , key); // Should print "DataNewData --"
问题是只有在键看起来像“DataNewData”(没有\ u0000)时才有效,否则它会打印一个空行(即使末尾没有“ - ”)
答案 0 :(得分:0)
您是否可以检查此JSON响应的Web服务中已完成的解码。它可能没有正确的解码,或者有时它将使用另一种解码格式或默认解码格式。我认为在编码服务输出时,JSON数据中会出现一些特殊字符或空字符。对于Web服务中使用的解码的类似编码,您必须在此处使用JSON字符串编码。
即,如果您在JSON解析中使用UTF-8编码,则必须确认在服务响应的JSON生成中使用相同的编码/解码。
我前一天会遇到类似的问题,但是通过在解析...:-D之前用空字符串替换来轻松地从JSON字符串中删除特殊字符来解决但这不是正确的方法,纠正编码和解码是正确的方法我认为这个无效的utf-8 JSON字符串。
可能有些会对你有所帮助..谢谢
“我认为上面提到的JSON也可能存在一些问题。我可以看到一个意外的方括号在没有任何数据的情况下关闭。请对它进行适当的检查...... :-)”