JSON格式有时不一样,如何从不同的JSON格式中提取信息?

Posted

技术标签:

【中文标题】JSON格式有时不一样,如何从不同的JSON格式中提取信息?【英文标题】:JSON format sometimes not same, how to extract the info from the different JSON format? 【发布时间】:2017-11-08 13:33:58 【问题描述】:

我正在使用它从 Youtube 获取自动建议。

http://suggestqueries.google.com/complete/search?hl=en&ds=yt&client=youtube&hjson=t&cp=1&q=Like&format=5&alt=json

["Tire",[["tired",0],["tired lyrics",0],["tired alan walker remix",0],["tired remix",0],["tired alan walker cover",0],["tired of being sorry enrique iglesias",0],["tire",0],["tired cover",0],["tiren mati kemaren full movie",0],["tired of talking",0]],"k":1,"q":"raN20uYZUrouYBB7VsB396HlA88"]

从上面你可以看到从上面提取信息,我正在使用这段代码从JSON array中提取诸如疲倦、疲倦的歌词、疲倦的艾伦沃克等信息。。 p>

NSString *json = nil;
    NSScanner *scanner = [NSScanner scannerWithString:str];
    [scanner scanUpToString:@"[[" intoString:NULL]; // Scan to where the JSON begins
    [scanner scanUpToString:@"]]" intoString:&json];

    NSLog(@"json before = %@", json);
            //The idea is to identify where the "real" JSON begins and ends.
    json = [NSString stringWithFormat:@"%@%@", json, @"]]"];

但有时 JSON array 可能是如下所示的这种格式。

["Like",[["likey",0,[131]],["likey twice lyrics",0,[3]],["likey dance",0,[3]],["likey dance practice",0,[3]],["likey live",0,[3]],["like i\u0027m gonna lose you",0],["like ooh ahh",0],["like a boss",0],["like a g6",0],["like a stone",0]],"k":1,"q":"9DuLDtNkAUfZ2X9AVZN90t0Zxlw"]

我怎样才能提取上面的例子likey,likey两次歌词的信息?

【问题讨论】:

使用db和like查询..它可能很容易管理 【参考方案1】:

NSScanner 并不是将原始 JSON 转换为有用数据的最佳 API。

最好使用原生 JSON API NSJSONSerialization

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

json 对象可以在这里转换为 NSArray

其中数据是来自响应的原始数据。

另见this answer

【讨论】:

以上是关于JSON格式有时不一样,如何从不同的JSON格式中提取信息?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Django中接收JSON格式的数据

java中如何把输入的数据以json格式保存在文本里面

python之json格式化与紧凑处理

如何在 Ruby on Rails 中“漂亮”地格式化 JSON 输出

jstree做动态树,json格式传输,存储过程获得datatable之类,不知道如何把datatable转换为需要的json数据格式

如何将 JSON 数据转换为 XML 格式数据并在 React JS 中下载文件