如何解析JSON

问题描述 投票:0回答:1

我在解析时遇到麻烦

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;
}
ios json objective-c
1个回答
0
投票

我们的代码是完美的,你只需要返回字典而不是像@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 以便您可以返回任何项目。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.