根据给定值检索json对象

时间:2015-07-10 10:01:12

标签: javascript json

从下面的json中,我如何根据给定的applicationName

检索对象
{
    "apps": [
        {
            "applicationName": "myTestApp",
            "keys": [
                {
                    "key": "app-key",
                    "value": "ZDM0"
                },
                {
                    "key": "env-key",
                    "value": "YTE1Mm"
                }
            ]
        },
        {
            "applicationName": "hello",
            "keys": [
                {
                    "key": "app-key",
                    "value": "ZjIwZT"
                },
                {
                    "key": "env-key",
                    "value": "MDExMTc5N2"
                }
            ]
        }
    ]
}

因此,如果我的输入是myTestApp,我想获取myTestApp对象

{
    "applicationName": "myTestApp",
    "keys": [
        {
            "key": "app-key",
            "value": "ZDM0"
        },
        {
            "key": "env-key",
            "value": "YTE1Mm"
        }
    ]
}

3 个答案:

答案 0 :(得分:4)

这应该可以解决问题:
(假设您的data是数据存储在其中的变量)

var result = data.apps.filter(function(app){
    return app.applicationName === "myTestApp";
});

if(result.length){         // If there are any results, then
    console.log(result[0]) // `result[0]` is the app with the right name.
}

答案 1 :(得分:1)

var jsonData; //把你的json数据放在这里

var appsArr = jsonData.apps;

for (var i in appsArr) {
   if(appsArr[i].applicationName == "myTestApp") {
      var requiredObj = appsArr[i];
      break;
   }
}

requiredObj是您想要的对象。

答案 2 :(得分:0)

您应该遍历JSON数组并检查applicationName的值。检查这个小提琴

http://jsfiddle.net/bcudcyf6/1/

var object = yourJSONdata;
for(var i in object.apps){
if("hello" == object.apps[i].applicationName)
    alert(i);
}

如果您的JSON太大,您还可以使用外部JavaScript库,例如Defiant(http://www.defiantjs.com/),这样可以轻松快速地进行搜索