Ios 如何解析JSON
我在解析Ios 如何解析JSON,ios,objective-c,json,api,Ios,Objective C,Json,Api,我在解析JSON时遇到了麻烦。 输出的字符是乱码的 请告诉我如何解决这个问题。 问题是下一点 NSLog(@"Dictionary '%@'",dictionary); // ◀︎ here - (void)viewDidLoad { [super viewDidLoad]; NSString *urlString=[NSString stringWithFormat:@"http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=4f46
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;
}
您的代码是完美的,您只需返回dictionary而不是@iPatel所说的resultobject 在代码中替换此代码
-(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,以便可以返回任何项目。您正在返回
返回结果对象
但是它应该是返回你的名字
@iPatel,你说得对。谢谢你回答这个问题。我应该用[return jsonDictionary]替换[return resultObject]吗?但是它不好用,对不起。谢谢你的回答。我尝试了这段代码,但输出的字符如下\U8cb8\U5207\U53ef\Uff1a\U4f55\U306a\U308a\U3068\U3054\U76f8\U8ac7\U4e0b\U3055\U3044\U3002……问题在于中文文本。转换json时,中文文本转换不正确。