我正在研究如何从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>
答案 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>