如何从嵌套对象中获取值

时间:2018-03-18 15:21:56

标签: javascript jquery json

我将以下示例json数据作为输入,

var JSONDATA =
    {
        "MainNode": {
            "_attributes": { 
                "class": "ABC",
                "projectclass": "MyProject",
                "prjname": "PrjName",
                "enabled":"true"
            },
            "PrjProp": {
                "_attributes": {
                    "name": "MyProject.save" 
                },
                "_text": true 
            }
        }
    }

使用Jquery或Javascript,我希望首先获得"projectclass"值“_attributes”。 JSON对象中可能有多个"_attributes",但只需要来自第一个(固定)"projectclass"的{​​{1}}(已修复)。

这可以像, 的console.log(JSONDATA.MainNode._attributes.testclass);

"_attributes"未修复,可以是"MainNode"。那么如何处理这个变量呢?我试过,"OtherNode"显示主节点名称,但如何在console.log(Object.keys($scope.testplan)[0]);中将其用作变量?

请建议。 感谢

2 个答案:

答案 0 :(得分:2)

您必须以JSONDATA.MyProject._attributes.projectclass

进行访问

使用[0]访问数组的第一个元素。这是一个对象,因此您无法访问JSONDATA[0][0].projectclass

var JSONDATA = {"MyProject":{"_attributes":{"class":"ABC","projectclass":"MyProject","prjname":"PrjName","enabled":"true"},"PrjProp":{"_attributes":{"name":"MyProject.save"},"_text":true}}};

console.log( JSONDATA.MyProject._attributes.projectclass );

_attributes下只有MyProject

如果你有多个项目,你可以循环:

var JSONDATA = {
    "MyProject":{"_attributes":{"class":"ABC","projectclass":"MyProject","prjname":"PrjName","enabled":"true"},"PrjProp":{"_attributes":{"name":"MyProject.save"},"_text":true}},
    "MyOtherProject":{"_attributes":{"class":"ABC","projectclass":"MyOtherProject","prjname":"PrjName","enabled":"true"},"PrjProp":{"_attributes":{"name":"MyProject.save"},"_text":true}}
};
	
for ( var key in JSONDATA ) {
    console.log( JSONDATA[key]._attributes.projectclass );
}

答案 1 :(得分:0)

您无法使用{(Montreal,5),(Montreal,3),(Montreal,10),(Montreal,9),(Montreal,8),(Montreal,2),(Montreal,2),(Montreal,9)} {(Toronto,7),(Toronto,2),(Toronto,2),(Toronto,3),(Toronto,4),(Toronto,4)} 来访问JSON对象 例如,JSONDATA[0][0]是您的JSON对象,只需

即可访问data
projectclass