在json数组中获取一些值

时间:2017-01-31 22:28:41

标签: javascript arrays json

我有一个看起来像这样的json。 如何检索“demo”组内的信息,而不是像以下那样查看数组:json['data'][0]我想检索读取第一个值的信息..“group”如果它与demo匹配,那么获取所有组资讯

 {
      "filter": "*",
      "data": [
        {
          "group": "asdasd",
          "enable": 1,
          "timeout": 7,
          "otpMode": 0,
          "company": "cool",
          "signature": "ou yeah",
          "supportPage": "",
          "newsLanguages": [
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            0
          ],
          "newsLanguagesTotal": 0
        },
        {
          "group": "demo",
          "enable": 1,
          "timeout": 7,
          "otpMode": 0,
          "company": "pppppooo",
          "signature": "TTCM",
          "supportPage": "http://www.trz<xa",
          "newsLanguages": [
            0,
            0
          ],
          "newsLanguagesTotal": 0
        }
      ]
    }

我有这么久:

   let json = JSON.parse(body);
    //console.log(json);
    console.log(json['data'][1]);

访问“demo”

3 个答案:

答案 0 :(得分:1)

处理每个&#34;数据项&#34;并检查组值。如果匹配,那就做点什么。

var json = JSON.parse(jsonStr);

for(var i=0;i<json.data.length;i++){
    if(json.data[i].group == "demo"){
        var group = json.data[i];
        // Process the group info
    }
}

答案 1 :(得分:1)

我建议你使用filter()

json.data.filter(function(item){
    return item.group === "demo";
});

这将返回组属性

中具有“demo”的对象

或者如果你想用它来获得花哨的es6

json.data.filter(item => item.group === "demo");

答案 2 :(得分:0)

如果任何记录缺少密钥“group”,则进行简单检查(类似于@MarkSkayff提供的代码)将产生错误。要解决此问题,请检查json [“data”] [i]是否存在检查json [“data”[i] [“group”]是否也存在

function json_data(){

  var res=[]
  for (var i in json["data"]){ 
  if(json["data"][i] && json["data"][i]["group"] === "demo"){ //strict comparison and boolean shortcircuiting
   res.push(json["data"][i]) 
  }    
 }
 console.log(res)
}

结果存储在res

此处空间不足,但更多关于布尔短路读取this explanation of dealing with irregular JSON data