Javascript JSON:如果JSON数组具有特定值,则获取该数组
我有一个包含数据的JSON对象:Javascript JSON:如果JSON数组具有特定值,则获取该数组,javascript,json,Javascript,Json,我有一个包含数据的JSON对象: { "ROOT": { "CATEGORY_AREA_LIST": { "CATEGORY_AREA": [{ "@attributes": { "CATEGORY_AREA_NAME": "General" }, "CATEGORY_TYPE": [{ "@attributes": { "CATEGORY_TYPE_NAME"
{
"ROOT": {
"CATEGORY_AREA_LIST": {
"CATEGORY_AREA": [{
"@attributes": {
"CATEGORY_AREA_NAME": "General"
},
"CATEGORY_TYPE": [{
"@attributes": {
"CATEGORY_TYPE_NAME": "MOC"
},
"CATEGORY_LOCATION": [{
"@attributes": {
"CATEGORY_LOCATION_NAME": "Location1",
"PROPOSED_LEVEL": "1"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Location2",
"PROPOSED_LEVEL": "2"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Location3",
"PROPOSED_LEVEL": "3"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Location4",
"PROPOSED_LEVEL": "4"
}
}]
}, {
"@attributes": {
"CATEGORY_TYPE_NAME": "LPG"
},
"CATEGORY_LOCATION": [{
"@attributes": {
"CATEGORY_LOCATION_NAME": "Location20",
"PROPOSED_LEVEL": "11"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Location22",
"PROPOSED_LEVEL": "21"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Location222",
"PROPOSED_LEVEL": "13"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Location2222",
"PROPOSED_LEVEL": "41"
}
}]
}]
}, {
"@attributes": {
"CATEGORY_AREA_NAME": "Restricted"
},
"CATEGORY_TYPE": [{
"@attributes": {
"CATEGORY_TYPE_NAME": "DND"
},
"CATEGORY_LOCATION": [{
"@attributes": {
"CATEGORY_LOCATION_NAME": "L1",
"PROPOSED_LEVEL": "11"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "L2",
"PROPOSED_LEVEL": "22"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "L3",
"PROPOSED_LEVEL": "33"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "L4",
"PROPOSED_LEVEL": "44"
}
}]
}, {
"@attributes": {
"CATEGORY_TYPE_NAME": "MNN"
},
"CATEGORY_LOCATION": [{
"@attributes": {
"CATEGORY_LOCATION_NAME": "Loc33",
"PROPOSED_LEVEL": "8"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Loc333",
"PROPOSED_LEVEL": "7"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Loc33333",
"PROPOSED_LEVEL": "6"
}
}, {
"@attributes": {
"CATEGORY_LOCATION_NAME": "Loc333333",
"PROPOSED_LEVEL": "5"
}
}]
}]
}]
}
}
}
我需要获取CATEGORY\u AREA
对象,该对象具有属性CATEGORY\u AREA\u NAME=“General”
我尝试了filter
/find
函数,但没有得到想要的结果
解决方案:
var jsArray=JSON.parse(jsonObj);var结果=
jsArray[“根”][“类别区域列表”][“类别区域”]。查找(当前=>{
如果(当前[“@attributes”][“CATEGORY\u AREA\u NAME”]=“General”)
返回电流;})
你可以按照我的方法:
var obj={
“根”:{
“类别/区域/列表”:{
“类别区域”:[
{
“@attributes”:{
“类别区域名称”:“一般”
},
“类别类型”:[
{
“@attributes”:{
“类别类型名称”:“主运行中心”
},
“类别位置”:[
{
“@attributes”:{
“类别位置名称”:“位置1”,
“建议的_级别”:“1”
}
},
{
“@attributes”:{
“类别位置名称”:“位置2”,
“建议的_级别”:“2”
}
},
{
“@attributes”:{
“类别位置名称”:“位置3”,
“建议的_级别”:“3”
}
},
{
“@attributes”:{
“类别位置名称”:“位置4”,
“建议的_级别”:“4”
}
}
]
},
{
“@attributes”:{
“类别类型名称”:“液化石油气”
},
“类别位置”:[
{
“@attributes”:{
“类别位置名称”:“位置20”,
“建议的_级别”:“11”
}
},
{
“@attributes”:{
“类别位置名称”:“位置22”,
“建议的_级别”:“21”
}
},
{
“@attributes”:{
“类别位置名称”:“位置222”,
“建议的_级别”:“13”
}
},
{
“@attributes”:{
“类别位置名称”:“位置2222”,
“建议的_级别”:“41”
}
}
]
}
]
},
{
“@attributes”:{
“类别区域名称”:“受限”
},
“类别类型”:[
{
“@attributes”:{
“类别类型名称”:“DND”
},
“类别位置”:[
{
“@attributes”:{
“类别位置名称”:“L1”,
“建议的_级别”:“11”
}
},
{
“@attributes”:{
“类别位置名称”:“L2”,
“建议的_级别”:“22”
}
},
{
“@attributes”:{
“类别位置名称”:“L3”,
“建议的_级别”:“33”
}
},
{
“@attributes”:{
“类别位置名称”:“L4”,
“建议的_级别”:“44”
}
}
]
},
{
“@attributes”:{
“类别类型名称”:“MNN”
},
“类别位置”:[
{
“@attributes”:{
“类别位置名称”:“Loc33”,
“建议的_级别”:“8”
}
},
{
“@attributes”:{
“类别位置名称”:“Loc333”,
“建议的_级别”:“7”
}
},
{
“@attributes”:{
“类别位置名称”:“Loc33333”,
“建议的_级别”:“6”
}
},
{
“@attributes”:{
“类别位置名称”:“Loc333333”,
“建议的_级别”:“5”
}
}
]
}
]
}
]
}
}
};
var result=obj[“根”][“类别区域列表”][“类别区域”]。查找(当前=>{
如果(当前[“@attributes”][“CATEGORY\u AREA\u NAME”]=“General”)
回流;
});
控制台日志(结果)代码>将“数据”替换为对JSON的引用,这样做:
data.ROOT.CATEGORY_AREA_LIST.CATEGORY_AREA.forEach(i => {
if (i["@attributes"].CATEGORY_AREA_NAME === "General") {
console.log(i);
}
});
首先将该json转换为js对象:var data=json.parse()
然后筛选:
var result = data["ROOT"]["CATEGORY_AREA_LIST"]["CATEGORY_AREA"].filter(function(area) {
return (area["@attributes"]["CATEGORY_AREA_NAME"] === "General")
})
“我尝试了filter/find函数,但没有得到想要的结果。”告诉我们.JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么您就不是在处理JSON。谢谢!它工作于var jsArray=JSON.parse(jsonObj);var result=jsArray[“ROOT”][“CATEGORY\u AREA\u LIST”][“CATEGORY\u AREA”]。查找(当前=>{if(当前[“@attributes”][“CATEGORY\u AREA\u NAME”]=“General”)返回当前;});谢谢你的帮助!谢谢你的帮助!