JSON解析内容,结果不可读,如“\U5b9d\U4e30”

JSON parse content, result is unreadable, such as ""\U5b9d\U4e30""

- (IBAction)updating:(id)sender {


    NSString *string = [NSString stringWithFormat:@"https://api.heweather.com/x3/weather?cityid=CN101180503&key=MY_API_ID"];
    NSURL *url = [NSURL URLWithString:string];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
    operation.responseSerializer = [AFJSONResponseSerializer serializer];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

        //ResponseObject is dictionary
        NSMutableDictionary *dictionary = responseObject;


        NSArray *array = dictionary[@"HeWeather data service 3.0"];


        NSDictionary *dicBasic = [array valueForKey:@"basic"];

        NSData *city = [dicBasic valueForKey:@"city"];
        NSLog(@"%@", city);


        NSString *latitude = [dicBasic valueForKey:@"lat"];
        NSLog(@"%@", latitude);




    } failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {
        NSLog(@"Nothing ");
    }];

当我运行段码时,除了城市名,其他都是正常的,

我想我需要从 JSON 文件中解码城市名称,因为城市名称是中文的。

这是一个例子:

2016-07-23 15:36:55.825 weatherDemo[2865:1189546] ( "\U5b9d\U4e30" ) 2016-07-23 15:36:55.825 weatherDemo[2865:1189546] ( "33.908000"

我该如何处理?

调查问题后。我想通了,都是response对象的数据结构。

试试下面的代码来得到你想要的:

    NSDictionary *responseDic = [[(NSDictionary *)responseObject objectForKey:@"HeWeather data service 3.0"] firstObject];

    NSDictionary *basicDic = [responseDic objectForKey:@"basic"];
    NSString *cityStr = [basicDic objectForKey:@"city"];
    NSLog(@"%@", cityStr);

首先,我敢打赌

dictionary[@"HeWeather data service 3.0"]

不是数组。然后您正在使用 valueForKey。 valueForKey 的任何使用都表明您不知道自己在做什么。 valueForKey 不关心它是什么类型的对象。我假设编译器告诉你不能使用

array [@"basic"]

您没有修复明显的错误,而是找到了最糟糕的解决方法。

你的实际问题根本不是问题。 JSON 可以很好地处理汉字。但是 NSLog 会像您看到的那样输出它们。这是 NSLog(它是一个调试工具)的问题。您的字符串中的数据绝对没问题。将它们放入标签或文本字段中,它们将被绘制得很好。

PS。任何时候你得到的响应不是你所期望的,你的应用程序都会崩溃。在不检查您获得的项目是否确实是您期望的类型的情况下解析 JSON 是绝对不负责任的。