Javascript 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"

我有一个包含数据的JSON对象:

{
  "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”)返回当前;});谢谢你的帮助!谢谢你的帮助!