我正在尝试使用AFNetworking异步获取JSON。
我有UTF8的json文件编码,AFJSONRequestOperation用UTF8代码返回dictionnary:
é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,效果很好(charset + BOM)!但我需要进行异步调用。
感谢您的帮助!
答案 0 :(得分: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]);
}