我想在javascript中从JSON响应中选择一个项目。我正在调用GET请求,API正在撤销JSON。
获取API: - https://autocomplete.clearbit.com/v1/companies/suggest?query=google.com
JSON: - [{"name":"Google","domain":"google.com","logo":"https://logo.clearbit.com/google.com"}]
我想在函数之外选择name
的值。这是我的Javascript,
var theUrl = 'https://autocomplete.clearbit.com/v1/companies/suggest?query=';
var q = "google.com";
function httpGet(theUrl, q)
{
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl+q, false ); // false for synchronous request
xmlHttp.send( null );
return xmlHttp.responseText;
}
var a = httpGet(theUrl, q);
console.log(a.name);
但是,a.name
正在返回undefined
答案 0 :(得分:1)
您需要将Google的响应解析为JSON,将其转换为对象,如下所示:
var theUrl = 'https://autocomplete.clearbit.com/v1/companies/suggest?query=';
var q = "google.com";
function httpGet(theUrl, q) {
var xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl+q, false ); // false for synchronous request
xmlHttp.send( null );
try {
return JSON.parse(xmlHttp.responseText);
} catch (error) {
return null;
}
}
var a = httpGet(theUrl, q);
if (a && a.length) {
console.log(a[0].name);
} else {
console.log('no results found');
}
Google还会返回一个数组,因此您必须执行a[0].name
而不是a.name
,并且为了更好地衡量,我们将添加安全检查以确保Google实际上将JSON返回给我们,并且它实际上已经在尝试打印名称之前至少有一个项目。
答案 1 :(得分:-2)
您正在尝试阅读字符串的name
属性。
要将JSON转换为JavaScript数据结构,必须使用JSON.parse()
方法对其进行解析。
完成后,您需要查看数据结构的正确部分。
JSON由一个数组组成,该数组包含一个具有name属性的对象。
您必须先从数组中提取对象,然后才能读取其name属性。