在以下网址提供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
答案 0 :(得分:2)
那是JSONP。
如果您使用JSONP技术调用此方法(将<script>
标记添加到页面并将src=
属性设置为URL),则需要先声明函数window.google.ac.h
进行JSONP调用以处理结果。
如果你使用ajax或服务器调用它,那么你有两个选择:
声明函数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);
从响应中删除外部window.google.ac.h(
..和.. )
,然后将其解析为JSON。
var json = response.replace(/^.*?\(/,'').replace(/\)$/,'');