带有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"; } 

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

如果您打印键的值

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

那么你会得到预期的输出

  

我不太明白问题是什么。 AFNetworking给了你一个有效的JSON包。 如果你想要上面的代码输出字符而不是\u…转义序列,你应该哄服务器给你提供结果来改变它的输出。 但是这不应该是必要的。 你最想做的下一步是通过一个JSON解串器运行它…

 NSDictionary * data = [NSJSONSerialization JSONObjectWithData:jsonData …]; 

…你应该得到以下字典: @{@"result":@"說"} 。 请注意, result键包含一个单个字符的string,我猜是你想要的。

顺便说一句:今后,我build议你复制粘贴输出到你的问题,而不是手工抄录。 这将避免几轮不必要的纠正和混乱。