我如何解析谷歌的建议查询JSON响应?

时间:2015-05-09 04:28:45

标签: javascript json

在以下网址提供JSON输出之前: http://suggestqueries.google.com/complete/search?client=youtube&ds=yt&q=Query

现在输出以下内容:

window.google.ac.h(["Query",[["query",0],["query optimization",0],["query in access 2013",0],["query processing and optimization",0],["query optimization in dbms",0],["querying microsoft sql server 2012",0],["query in access 2010",0],["query letter",0],["querying microsoft sql server 2012 tutorial",0],["query access",0]],{"k":1,"q":"4-l7QUSZEiiQKaSq-yXfrtfHpd0"}])

好奇我如何将其解析成JSON

1 个答案:

答案 0 :(得分:2)

那是JSONP。

如果您使用JSONP技术调用此方法(将<script>标记添加到页面并将src=属性设置为URL),则需要先声明函数window.google.ac.h进行JSONP调用以处理结果。

如果你使用ajax或服务器调用它,那么你有两个选择:

  1. 声明函数window.google.ac.h处理结果然后评估响应。 (因为,这是添加<script>代码的行为,它会破坏您网页中的javascript文件。所以您基本上只是模仿JSONP)

    function window.google.ac.h (json) {
        // process your response here
    }
    var s = document.createElement('script');
    s.src = 'http://suggestqueries.google.com/complete/search?' +
            'client=youtube&ds=yt&q=Query';
    document.body.appendChild(s);
    

    或者,如果您通过其他方式收到回复:

    function window.google.ac.h (json) {
        // process your response here
    }
    eval(response);
    
  2. 从响应中删除外部window.google.ac.h( ..和.. ),然后将其解析为JSON。

    var json = response.replace(/^.*?\(/,'').replace(/\)$/,'');