【问题标题】:JSON response encoding not coming back utfJSON响应编码不回来utf
【发布时间】:2013-03-30 01:11:52
【问题描述】:

我正在尝试使用来自服务器的 jsonkit 或 nsjsonserialization 解码 json 字符串,但我得到冒号:标记更改为等于 = 符号和逗号,更改为分号;例如 来自服务器:

"response": { "status": "OK","message": "","timestamp": "30 Mar 2013 11:33:08", 
"url":"/abc/api/getconfig/dev-game?language=en" }...

但我得到的回应是:

JSONDecoder *decodedData = [[JSONDecoder alloc] initWithParseOptions:JKParseOptionStrict];
NSDictionary *parsedList = [decodedData objectWithData:responseData];

或:

NSError *jsonError = nil;
NSDictionary *parsedList = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&jsonError];

给我:

response =     {
    message = "";
    status = OK;
    timestamp = "30 Mar 2013 11:33:08";
    url = "/abc/api/getconfig/dev-game?language=en";
};
result =     {
    meta =         {
        dateLastModified = "29 Mar 2013 11:59:17";
    };

这在尝试解析时给我带来了很多问题。我能做到:

NSSTring *jsonString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

或者将请求 url 放在浏览器或 jsonlint.com 中,我会得到正确的格式,但我需要将它放在字典中,因为我需要能够解析它。除非将其放入不同的数据类型会更好,因为我将尝试找到特定的键,即如果我有 column_1、column_2 则获取每个“列”... 提前致谢。

【问题讨论】:

  • @aăâ 至少感谢您的回复,但如果您阅读我的问题,那是我处理回复的方式之一。如果它是响应中的数组或字典,我遇到的问题与我收到编码后的编码有关。
  • "response": {} 这个结构告诉你的响应必须是字典
  • 对,但是在使用 jsonkit 或 nsjsonserialization 将响应放入字典后,我的数据有分号;并在其中使用等号 = 使其成为无效的 json,就像我上面给出的示例一样
  • 看我的回答。遵循 JSON 结构。

标签: ios objective-c json nsjsonserialization


【解决方案1】:

JSONKitNSJSONSerialization 将为您解析 JSON 字符串并为您创建 NSDictionary/NSArray/NSString/NSNumber 对象。您不必自己解析任何内容。您会看到等号等,因为您正在打印已解析响应对象的描述(可能使用 NSLog)。

【讨论】:

  • 好吧,确实有道理。我正在使用 NSLog 来记录 NSDictionary 或记录 JSONKit 解码的 responseData 它确实会出现不同的结果,但是如果我使用相同的 responseData 并将其转换为 NSString 并使用 NSLog 记录它,我会得到正确的格式。是否有另一种方法可以用来记录响应以确保正确编码?此外,如果我查看调试器,从 JSON 创建的字典显示“响应”和“结果”,因为键和数组是值而不是其他字典,因为值应该是
  • 如果您想查看原始 JSON,则继续执行您所做的操作(将 NSData 转换为 NSString 并打印出字符串。关于您对创建数组而不是字典的观察,我在您的日志输出中没有看到它;它对我来说就像一本字典。
猜你喜欢
  • 2018-11-15
  • 2017-05-18
  • 1970-01-01
  • 2016-02-21
  • 2017-06-28
  • 2019-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多