Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用键的文本字符串访问JSON对象的特定部分_Javascript_Arrays_Object - Fatal编程技术网

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

Javascript 使用键的文本字符串访问JSON对象的特定部分,javascript,arrays,object,Javascript,Arrays,Object,我已经对两个json文件执行了diff,输出是一个字符串数组,表示json树中的位置 原始json文件大致如下: { 'key': { 'key3': 'value' }, 'key1': { 'key2': 'value2' } 'key5': { 'key4': 'value4' } } 差分的输出为: [ 'key.key3', 'key1.key2' ] 我能够循环遍历数组中的所有字符串: (difference).forEac

我已经对两个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]
但返回的是未定义的。

您必须将
'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'
})

您必须将
'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'
})

这不是有效的JSON。JSON需要双引号。好的,谢谢,是的,你说得对。应该有双引号,而且我似乎被JSON对象的术语误导了。建议的“可能重复”应能解决此问题。谢谢@Andreashat,这不是有效的JSON。JSON需要双引号。好的,谢谢,是的,你说得对。应该有双引号,而且我似乎被JSON对象的术语误导了。建议的“可能重复”应能解决此问题。谢谢@Andreash这是一个很好的解决方案。谢谢。没问题:)如果它解决了您的问题,请将答案标记为已接受。您已经看到问题下面的完全相同的答案…?最后我在回答中使用了该函数:@Andreas不,我没有。在我发布我的答案后,它被标记为重复(就这点而言,你不能在重复的问题上发布答案)。这是一个很好的解决方案。谢谢。没问题:)如果它解决了您的问题,请将答案标记为已接受。您已经看到问题下面的完全相同的答案…?最后我在回答中使用了该函数:@Andreas不,我没有。在我发布我的答案后,它被标记为重复(就此而言,你不能在重复的问题上发布答案)。