Javascript 使用键的文本字符串访问JSON对象的特定部分
我已经对两个json文件执行了diff,输出是一个字符串数组,表示json树中的位置 原始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
{
'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不,我没有。在我发布我的答案后,它被标记为重复(就此而言,你不能在重复的问题上发布答案)。