我在解析时遇到麻烦
JSON
。
输出的字符是乱码。
请告诉我如何解决这个问题。 成为问题的是下一点。
NSLog(@"Dictionary '%@'",dictionary); // ◀︎ here
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *urlString=[NSString stringWithFormat:@"http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=4f46fcd28f4b15e3&lat=34.678&lng=135.52&range=5&order=4&format=json"];
NSString *urlUTF8=[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url=[NSURL URLWithString:urlUTF8];
NSString *jsonString=[self performServerRequestWithURL:url];
NSDictionary *dictionary=[self parseJSON:jsonString];
NSLog(@"Dictionary '%@'",dictionary); // ◀︎ here
}
-(NSString*)performServerRequestWithURL:(NSURL*)url
{
NSError *error;
NSString *resultString=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
if(resultString == nil){
NSLog(@"ダウンドード失敗:%@",error);
return nil;
}
return resultString;
}
-(NSDictionary*)parseJSON:(NSString*)jsonString
{
NSData *data=[jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
id resultObject=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
if([resultObject isKindOfClass:[NSDictionary class]]){
NSLog(@"its an dictionary");
NSDictionary *jsonDictionary=(NSDictionary*)resultObject;
} else {
NSLog(@"its probably a array");
NSArray *jsonArray=(NSArray*)resultObject;
}
return resultObject;
}
我们的代码是完美的,你只需要返回字典而不是像@iPatel所说的结果对象。
在您的代码中替换此代码..
-(NSDictionary*)parseJSON:(NSString*)jsonString
{
NSData *data=[jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *error;
id resultObject=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
NSDictionary *jsonDictionary;
if([resultObject isKindOfClass:[NSDictionary class]]){
NSLog(@"its an dictionary");
jsonDictionary=(NSDictionary*)resultObject;
NSLog(@"jsonDictionary : %@",jsonDictionary);
} else {
NSLog(@"its probably a array");
NSArray *jsonArray=(NSArray*)resultObject;
NSLog(@"jsonArray : %@",jsonArray);
}
return jsonDictionary;
}
但是您的代码包含 NSArray 也意味着 json 可以是数组或字典,而不是您必须将返回类型更改为 id 以便您可以返回任何项目。