通过单个字符串访问嵌套的JSON对象属性

通过单个字符串访问嵌套的JSON对象属性,json,typescript,Json,Typescript,此行:X=This.appGlobal.GetNavigationLanguage().data 重新运行JSON,如下所示。 我想取NAV.REPORTS.BMAIL.TITLE 翻译代码(NAV.REPORTS.BMAIL.TITLE)是动态创建的 X.NAV.REPORTS.BMAIL.TITLE=>有效 X['NAV']['REPORTS']['BMAIL']['TITLE']=> 但请记住,我已经动态创建了翻译代码,我需要这样的代码: let transCode = 'NAV.REP

此行:
X=This.appGlobal.GetNavigationLanguage().data
重新运行JSON,如下所示。

我想取NAV.REPORTS.BMAIL.TITLE

翻译代码(NAV.REPORTS.BMAIL.TITLE)是动态创建的

  • X.NAV.REPORTS.BMAIL.TITLE
    =>有效
  • X['NAV']['REPORTS']['BMAIL']['TITLE']
    =>
  • 但请记住,我已经动态创建了翻译代码,我需要这样的代码:

    let transCode = 'NAV.REPORTS.BMAIL.TITLE';
    console.log(X[transCode]);
    

    我如何才能做到这一点?

    短途险恶之路如下:

    console.log(eval(`X.${transCode}`));
    
    不那么糟糕的方法是使用递归函数调用,这意味着您只查看字符串路径中的项数(而不是循环整个集合)


    短途险恶之路如下:

    console.log(eval(`X.${transCode}`));
    
    不那么糟糕的方法是使用递归函数调用,这意味着您只查看字符串路径中的项数(而不是循环整个集合)

    测试数据={
    导航:{
    报告:{
    b邮件:{
    标题:“你好”
    }
    }
    }
    }
    让transCode='NAV.REPORTS.BMAIL.TITLE';
    properties=transCode.split('.');/>[“导航”、“报告”、“电子邮件”、“标题”]
    结果=测试数据
    properties.forEach(函数(属性){
    结果=结果[属性]
    })
    console.log(result)//-->您好
    测试数据={
    导航:{
    报告:{
    b邮件:{
    标题:“你好”
    }
    }
    }
    }
    让transCode='NAV.REPORTS.BMAIL.TITLE';
    properties=transCode.split('.');/>[“导航”、“报告”、“电子邮件”、“标题”]
    结果=测试数据
    properties.forEach(函数(属性){
    结果=结果[属性]
    })
    
    console.log(result)//-->您好
    您能用一个
    分隔符拆分
    转码
    ,然后根据需要提取索引吗?如果您正在使用其他库,有一些很好的函数,比如。我可以,但在这种情况下,我必须使用double进行迭代,因为导航的每一项都可以有子项。所以我想避免这种情况。你能用
    分隔符拆分
    转码
    ,然后根据需要提取索引吗?如果您正在使用其他库,有一些很好的函数,比如。我可以,但在这种情况下,我必须使用double进行迭代,因为导航的每一项都可以有子项。所以我想避免这种情况。这是一个很好的解决方案。这是一个很好的解决方案。