iOS:JSON编码问题

时间:2013-07-03 23:37:08

标签: ios json

我有示例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)时才有效,否则它会打印一个空行(即使末尾没有“ - ”)

1 个答案:

答案 0 :(得分:0)

您是否可以检查此JSON响应的Web服务中已完成的解码。它可能没有正确的解码,或者有时它将使用另一种解码格式或默认解码格式。我认为在编码服务输出时,JSON数据中会出现一些特殊字符或空字符。对于Web服务中使用的解码的类似编码,您必须在此处使用JSON字符串编码。

即,如果您在JSON解析中使用UTF-8编码,则必须确认在服务响应的JSON生成中使用相同的编码/解码。

我前一天会遇到类似的问题,但是通过在解析...:-D之前用空字符串替换来轻松地从JSON字符串中删除特殊字符来解决但这不是正确的方法,纠正编码和解码是正确的方法我认为这个无效的utf-8 JSON字符串。

可能有些会对你有所帮助..谢谢

“我认为上面提到的JSON也可能存在一些问题。我可以看到一个意外的方括号在没有任何数据的情况下关闭。请对它进行适当的检查...... :-)”