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时,中文文本转换不正确。