使用键的文本字符串访问JSON对象的特定部分

时间:2017-06-20 15:12:18

标签: javascript arrays object

我已经执行了两个json文件的diff,输出是一个字符串数组,表示json树中的位置。

原始的json文件类似于:

{
  'key': {
    'key3': 'value'
  },
  'key1': {
    'key2': 'value2'
  }
  'key5': {
    'key4': 'value4'
  }
}

差异的输出是:

[
  'key.key3',
  'key1.key2'
]

我能够遍历数组中的所有字符串:

(difference).forEach((k) => {
  console.log(k);
})

如何使用上面forEach()函数设置的字符串访问原始json文件中的值?我想要的东西就像我直接调用originalJSON.key1.key2会返回的东西,但它必须由上面函数中的字符串组成。

我已尝试originalJSON[k],但这只是返回undefined。

1 个答案:

答案 0 :(得分:3)

您必须将'key.key3'分为'key''key3'

执行此操作的一种方法是'key.key3'.split(".")['key','key3']

然后您可以使用它们浏览原始对象:

(difference).forEach( k => {
  var keys = k.split(".")         // ['key','key3']
  var val = originalJSON[keys[0]][keys[1]] // == originalJSON['key']['key3']
  console.log(val);                        // 'value', 'value2', 'value4'
})