NSData to NSString with JSON response

2 Solutions Collect From Internet About “NSData to NSString with JSON response”

If you convert the JSON data

{ "result" : "\u8aaa" }

to a NSDictionary (e.g. using NSJSONSerialization) and print the dictionary

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

then you will get the output

{
    result = "\U8aaa";
}

The reason is that the description method of NSDictionary uses “\Unnnn” escape sequences
for all non-ASCII characters. But that is only for display in the console, the dictionary is correct!

If you print the value of the key

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

then you will get the expected output

I don’t quite understand what the problem is. AFNetworking has given you a valid JSON packet. If you want the above code to output the character instead of the \u… escape sequence, you should coax the server feeding you the result to change its output. But this shouldn’t be necessary. What you most likely want to do next is run it through a JSON deserializer…

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

…and you should get the following dictionary back: @{@"result":@"說"}. Note that the result key holds a string with a single character, which I’m guessing is what you want.

BTW: In future, I suggest you copy-paste output into your question rather than transcribing it by hand. It’ll avoid several needless rounds of corrections and confusion.