从数组中的 JSON 导出结果

Posted

技术标签:

【中文标题】从数组中的 JSON 导出结果【英文标题】:Export results from JSON in an array 【发布时间】:2019-07-23 23:40:54 【问题描述】:

我想使用以下调用从 Youtube 获取自动建议:

await fetch('https://suggestqueries.google.com/complete/search?client=youtube&ds=yt&q=skrillex&callback=suggestCallback')
.then(response => console.log(response))

此调用获得以下 JSON 作为结果:

"suggestCallback && suggestCallback(["skrillex",[["skrillex",0],["skrillex bangarang",0],["skrillex make it bun dem",0],["skrillex scary monsters and nice sprites",0],["skrillex cinema",0],["skrillex live",0],["skrillex first of the year",0],["skrillex sicko mode",0],["skrillex kyoto",0],["skrillex remix",0]],"k":1,"q":"bEJKh2TVzWqSICI3U3xEdXTC00g"])"

但是,我正在努力将此结果转换为“实际建议”数组。比如我想把上面得到的JSON存储成如下格式:

let myArray = ["skrillex", "skrillex bangarang", "skrillex make it bun dem", "skrillex scary monsters and nice sprites", "skrillex cinema", "skrillex live", "skrillex first of the year", "skrillex sicko mode", "skrillex kyoto" ,"skrillex remix"]

为了实现这一目标,可行的解决方案是什么?

【问题讨论】:

您的结果实际上是 JSONP,您应该能够在使用正则表达式对其运行 JSON.parse() 之前剥离其中的非 JSON 部分。有了值,就可以得到你感兴趣的路径,也就是[1],然后用Array.prototype.map()转换成你感兴趣的数据结构。 【参考方案1】:

这样做的一种方法是使用正则表达式从您获得的响应中过滤出 json 响应,然后根据该结果创建一个数组。

let jsonp = 'suggestCallback && suggestCallback(["skrillex",[["skrillex",0],["skrillex bangarang",0],["skrillex make it bun dem",0],["skrillex scary monsters and nice sprites",0],["skrillex cinema",0],["skrillex live",0],["skrillex first of the year",0],["skrillex sicko mode",0],["skrillex kyoto",0],["skrillex remix",0]],"k":1,"q":"bEJKh2TVzWqSICI3U3xEdXTC00g"])';
    
    let myRe = /\[(.*)\]/g;
    let regExGroups = myRe.exec(jsonp);
    let json = JSON.parse(regExGroups[0]);
    
    let myArray = [];
    
    json[1].forEach((element) => 
    	myArray.push(element[0]);
    );
    
    console.log('suggestions array', myArray);

https://jsfiddle.net/zeonfrost/s7b4aLr6/

但你真正应该做的可能是定义一个SuggestCallback函数what is jsonp

【讨论】:

以上是关于从数组中的 JSON 导出结果的主要内容,如果未能解决你的问题,请参考以下文章

我可以从节点中的 sqlite3 数据库中获取数组而不是 JSON 数组的结果吗?

使用 jQuery 从 JSON 数组中获取唯一结果

通过 Google BigQuery API 将查询结果导出为 JSON

如何从带有条件的 React Native 中的 API 数组结果中获取记录?

使用 Ajax Jquery 将 Json 结果返回的数据数组放入 DataTable 中

postman——集合——执行集合——分享(导出导入)集合运行结果