NSData to NSString with JSON response

前端 未结 2 1292
清歌不尽
清歌不尽 2020-12-06 03:09

NSData* jsonData is the http response contains JSON data.

NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8Stri         


        
相关标签:
2条回答
  • 2020-12-06 03:49

    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

    0 讨论(0)
  • 2020-12-06 03:57

    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.

    0 讨论(0)
提交回复
热议问题