JSON解析内容,结果是不可读的,例如""" \ U5b9d \ U4e30""

时间:2016-07-23 07:41:12

标签: ios json nsjsonserialization

- (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](& #34; 33.908000"

我该如何处理?

2 个答案:

答案 0 :(得分:1)

在调查问题后。我想通了,它完全是关于响应对象的数据结构。

尝试使用以下代码获取所需内容:

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

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

答案 1 :(得分:0)

首先,我打算投入相当多的资金

dictionary[@"HeWeather data service 3.0"]

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

array [@"basic"]

而不是修复你明显的bug,你找到了最糟糕的解决方法。

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

PS。只要您收到的回复不符合您的预期,您的应用就会崩溃。如果不检查您获得的项目实际上是您期望的类型,解析JSON绝对是不负责任的。