一尘不染

NSData与JSON响应的NSString

json

NSData * jsonData 是包含JSON数据的http响应。

NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"jsonString: %@", jsonString);

我得到了结果:

{ "result": "\u8aaa" }

将数据编码为正确的字符串而不是“ \ uxxxx”之类的Unicode字符串的正确方法是什么?


阅读 200

收藏
2020-07-27

共1个答案

一尘不染

如果您转换JSON数据

{ "result" : "\u8aaa" }

NSDictionary(例如使用NSJSONSerialization)并打印字典

NSError *error;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];
NSLog(@"%@", jsonDict);

那么你会得到输出

{
    result = "\U8aaa";
}

原因是该description方法NSDictionary对所有非A​​SCII字符使用“ \ Unnnn”转义序列。但这仅是为了在控制台中
显示 ,字典是 正确的

如果您打印密钥的值

NSLog(@"%@", [jsonDict objectForKey:@"result"]);

那么您将获得预期的输出

2020-07-27