在javascript中解析JSON数据

时间:2016-02-04 11:33:43

标签: javascript jquery json

我有以下JSON数据,我需要根据JAVASCRIPT中的 Keytype 来迭代这些数据。 它应该仅从传递的密钥代码返回记录。 假设我需要438的记录意味着它应该只给我以下数据。 (例如:" K":" 43800001"," D":"数据1")

{
  "GroupCode": {
    "PickType": [
      {
        "@KeyType": "438",
        "R": [
          {
            "K": "43800001",
            "D": "Data1"
          }
        ]
      },
      {
        "@KeyType": "439",
        "R": [
          {
            "K": "43900001",
            "D": "Data2"
          }
        ]
      },
      {
        "@KeyType": "440",
        "R": [
          {
            "K": "44000001",
            "D": "Data3"
          }
        ]
      },
      {
        "@KeyType": "441",
        "R": [
          {
            "K": "44100001",
            "D": "Data4"
          }
        ]
      }
    ]
  }
}

因为我不熟悉java脚本并且不熟悉它,我还没有尝试过编码。请帮我获取数据。

4 个答案:

答案 0 :(得分:2)

我们说上面的内容存储在变量obj中。您可以通过以下

获得结果
var result = obj.GroupCode.PickType.filter(function(item){
                return item["@KeyType"] === "438"
            }).map(function(item){
               return item.R[0];
            });

请注意resultarray。如果您有针对该条件的唯一对象,则必须检查数组的长度,然后提取对象,即result[0]result.shift()

答案 1 :(得分:0)

尝试一个简单的jquery每个循环和一个if:

jquery的:

$.each(obj.GroupCode.PickType,function(i,v){
 if (v["@KeyType"] == 438) {
      console.log(v.R)//v.R[0];
   }
});

的javascript:

for(v in obj.GroupCode.PickType) {
  if (v["@KeyType"] == 438) {
      console.log(v.R)//v.R[0];
   }
}

答案 2 :(得分:0)

Working Fiddle here

function getByKeyType(keytype) {
  for(i in f.GroupCode.PickType) {
    if(f.GroupCode.PickType[i].KeyType == keytype) {
       return f.GroupCode.PickType[i].R[0];
    }
  }
  return null;
}

alert(getByKeyType(438).K)
alert(getByKeyType(438).D)

答案 3 :(得分:0)

试试这个

  function getByKeyType(keytype) {
    for(i in f.GroupCode.PickType) {
    if(f.GroupCode.PickType[i].KeyType == keytype) {
       return f.GroupCode.PickType[i].R[0];
    }
  }
  return null;
}