NSData * jsonData 是包含JSON数据的http响应。
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"jsonString: %@", jsonString);
我得到了结果:
{ "result": "\u8aaa" }
将数据编码为正确的字符串的正确方法是什么,而不是像" \ uxxxx"这样的unicode字符串?
答案 0 :(得分:19)
如果您转换JSON数据
{ "result" : "\u8aaa" }
到NSDictionary
(例如使用NSJSONSerialization
)并打印字典
NSError *error;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSLog(@"%@", jsonDict);
然后你会得到输出
{
result = "\U8aaa";
}
原因是description
的{{1}}方法使用“\ Unnnn”转义序列
对于所有非ASCII字符。但这仅适用于控制台中的 display ,字典正确!
如果您打印键的值
NSDictionary
然后你会得到预期的输出
NSLog(@"%@", [jsonDict objectForKey:@"result"]);
答案 1 :(得分:0)
我不太明白问题是什么。 AFNetworking为您提供了有效的JSON数据包。如果您希望上面的代码输出字符而不是\u…
转义序列,您应该哄骗服务器为您提供结果以更改其输出。但这不应该是必要的。您最有可能接下来要做的是通过JSON反序列化程序运行它......
NSDictionary * data = [NSJSONSerialization JSONObjectWithData:jsonData …];
...你应该得到以下字典:@{@"result":@"說"}
。请注意,result
键包含一个包含单个字符的字符串,我猜这是你想要的。
顺便说一句:将来,我建议你将输出复制粘贴到你的问题中,而不是手工转录。它将避免几轮不必要的修正和混乱。