带有JSON响应的NSData到NSString

shi*_*ami 7 encoding json nsstring nsdata ios

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

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

我得到了结果:

{ "result": "\u8aaa" }
Run Code Online (Sandbox Code Playgroud)

将数据编码为正确字符串的正确方法是什么,而不是像"\ uxxxx"这样的unicode字符串?

Mar*_*n R 19

如果转换JSON数据

{ "result" : "\u8aaa" }
Run Code Online (Sandbox Code Playgroud)

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

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

然后你会得到输出

{
    result = "\U8aaa";
}
Run Code Online (Sandbox Code Playgroud)

原因是对所有非A​​SCII字符使用"\ Unnnn"转义序列的description方法NSDictionary.但那只是在控制台中显示,字典是正确的!

如果您打印键的值

NSLog(@"%@", [jsonDict objectForKey:@"result"]);
Run Code Online (Sandbox Code Playgroud)

那么你将得到预期的输出

?
Run Code Online (Sandbox Code Playgroud)