使用JS解析ipstack JSON数据

时间:2019-02-08 14:43:55

标签: javascript json

我正在研究如何从JSON数据中提取数据

我写了下面的代码来提取名为ur的变量

但没有得到结果。

<script>
var txt = '{ "type":"ipv4", "location":{ "geoname_id":2816, "languages":[ { "code":"en", "name":"English" }, { "code":"ur", "name":"Urdu" } ], "is_eu":false } }';
var obj = JSON.parse(txt);
console.log(obj.location.languages.code);
</script>

4 个答案:

答案 0 :(得分:0)

您必须在使用语言后再使用索引。因为此属性类型是数组。

<script>
var txt = '{ "type":"ipv4", "location":{ "geoname_id":2816, "languages":[ { "code":"en", "name":"English" }, { "code":"ur", "name":"Urdu" } ], "is_eu":false } }';
var obj = JSON.parse(txt);
document.write(obj.location.languages[0].code);
</script>

答案 1 :(得分:0)

languages是一个数组,因此请尝试如下操作:

obj.location.languages[0].code

答案 2 :(得分:0)

下面的代码将为您提供所有语言代码的数组。

<script>
var txt = '{ "type":"ipv4", "location":{ "geoname_id":2816, "languages":[ {"code":"en", "name":"English" }, { "code":"ur", "name":"Urdu" } ], "is_eu":false } }';
var obj = JSON.parse(txt);
document.write(obj.location.languages.map((language,i)=>language.code));
</script>

答案 3 :(得分:0)

obj.location.languages是一个数组,不能直接在其上请求code属性来访问它。您应该归还哪一项的code属性,是英语还是乌尔都语?您将需要使用项目的索引(以0开头)来访问它,或者使用Array上的迭代器方法之一,例如forEach()map()reduce()进行循环通过所有这些。这是一个示例:

var txt = '{ "type":"ipv4", "location":{ "geoname_id":2816, "languages":[ { "code":"en", "name":"English" }, { "code":"ur", "name":"Urdu" } ], "is_eu":false } }';
var obj = JSON.parse(txt);

var html = '';
obj.location.languages.forEach(function(lang) {
  html += '<li>' + lang.name + ' (' + lang.code + ')</li>';
});

document.getElementById('languages').innerHTML = html;
Languages: <br />
<ul id="languages"></ul>