0

我正在尝试使用 AFNetworking 异步获取 JSON。

我在 UTF8 中有一个 json 文件编码,AFJSONRequestOperation 用 UTF8 代码返回我的字典:

éphémère   -->   \U00c3\U00a9ph\U00c3\U00a9m\U00c3\U00a8re

有没有办法让 UTF8 与 AFJSONRequestOperation 一起工作?

使用 AFJSONRequestOperation 存在第二个问题:他无法使用 BOM 读取 UTF8 文件。

这是我的代码:

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
    [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/plain"]];
    AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                         JSONRequestOperationWithRequest:request
                                         success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON)
                                         {

                                             NSLog(@"JSON: %@", JSON);
                                         } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON)
                                         {
                                             NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);

                                         }];
    [operation start];

在此之前我使用的是 JSONKit,它工作得很好(字符集 + BOM)!但我需要进行异步调用。

谢谢您的帮助!

4

1 回答 1

1

这是 NSLog 的问题,您的 JSON 是有效的,您可以在其中检索键的值并查看其有效字符。

我使用此代码使我的响应 JSON 更具可读性:

-(NSString*)stringByReplacingUnicodePoint:(id)jsonObj
{
    NSData *data = [NSJSONSerialization dataWithJSONObject:jsonObj options:0 error:nil];
    NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    return result;
}

-(void)networkResponse:(id)JSON
{
    NSLog(@"JSON: %@", [self stringByReplacingUnicodePoint: JSON]);
}
于 2014-08-25T11:01:17.150 回答