在 Nodejs 中解析嵌套 JSON

2024-04-02

我一直在尝试解析嵌套的 JSON 数据,下面是我的代码

var string = '{"key1": "value", "key2": "value1", "Key3": {"key31":"value 31"}}';
var obj = JSON.parse(string);
console.log(obj.key1)
console.log(obj[0]);

这是输出

$ node try.js 
value
undefined

为什么我的未定义obj[0]?在这种情况下以及嵌套键如何获取值key31?

Update现在在@SergeyK和其他人的帮助下,我将上面的代码修改如下

var string = '{"key1": "value1", "key2": "value2", "key3": {"key31":"value 31"}}';

var obj = JSON.parse(string);
var array = Object.keys(obj)

for (var i = 0; i < array.length; i++) {
    console.log(array[i], obj[array[i]]);
}

输出如下

$ node try.js 
key1 value1
key2 value2
key3 { key31: 'value 31' }

But for {"key31":"value 31"}我如何访问密钥key31并得到它的值value 31?


您只是无法通过索引访问命名对象属性。您可以使用obj[Object.keys(obj)[0]]

Edit:

正如 @smarx 在评论中解释的那样,这个答案不适合通过索引直接访问特定属性,因为Object.keys是无序的,因此仅适用于需要循环对象的键/值的情况。

Example:

var string = '{"key1": "value", "key2": "value1", "Key3": {"key31":"value 31"}}';
var obj = JSON.parse(string);
var keysArray = Object.keys(obj);
for (var i = 0; i < keysArray.length; i++) {
   var key = keysArray[i]; // here is "name" of object property
   var value = obj[key]; // here get value "by name" as it expected with objects
   console.log(key, value);
}
// output:
// key1 value
// key2 value1
// Key3 { key31: 'value 31' }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Nodejs 中解析嵌套 JSON 的相关文章