带有JSON响应的NSData到NSString
NSData * jsonData是包含JSON数据的http响应。
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSLog(@"jsonString: %@", jsonString);
我得到了结果:
{ "result": "\u8aaa" }
什么是正确的方式来编码数据到正确的string,而不是unicodestring像“\ uxxxx”?
如果你转换JSON数据
{ "result" : "\u8aaa" }
到一个NSDictionary
(例如使用NSJSONSerialization
)并打印字典
NSError *error; NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; NSLog(@"%@", jsonDict);
那么你会得到输出
{ result = "\U8aaa"; }
原因是NSDictionary
的description
方法对所有非ASCII字符使用“\ Unnnn”转义序列。 但是,这只是在控制台显示 ,字典是正确的 !
如果您打印键的值
NSLog(@"%@", [jsonDict objectForKey:@"result"]);
那么你会得到预期的输出
說
我不太明白问题是什么。 AFNetworking给了你一个有效的JSON包。 如果你想要上面的代码输出字符而不是\u…
转义序列,你应该哄服务器给你提供结果来改变它的输出。 但是这不应该是必要的。 你最想做的下一步是通过一个JSON解串器运行它…
NSDictionary * data = [NSJSONSerialization JSONObjectWithData:jsonData …];
…你应该得到以下字典: @{@"result":@"說"}
。 请注意, result
键包含一个单个字符的string,我猜是你想要的。
顺便说一句:今后,我build议你复制粘贴输出到你的问题,而不是手工抄录。 这将避免几轮不必要的纠正和混乱。