在Javascript中从JSON中选择项目

时间:2017-12-10 20:26:34

标签: javascript json

我想在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

2 个答案:

答案 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属性。