JSON:按属性获取对象

时间:2014-06-22 15:25:09

标签: jquery json

我有一个像这样的json:

{
    "page": {
        "id": 220,
        "parentId": 196,
        "property": {
            "1": {
                "name": "h1",
                "value": "value i dont need",
            },
            "2": {
                "name": "tags",
                "value": "value i dont need",
            },
            "3": {
                "name": "description",
                "value": "value i need",
            },
}

问题是:如果属性的ID(在我的情况下为“3”)动态变化,我怎么能得到“我需要的价值”? 所以,我不能只使用

data.page.property[3].value
不过,我正在使用jquery。

谢谢!

- 由于误解而编辑

6 个答案:

答案 0 :(得分:2)

要获取特定值按名称,您可以使用以下功能:

function getValue( name ) {
    var val = '';
    $.each(data.page.property, function(k,v) { 
        if( v.name == name ) {
            val = v.value;
            return false;
        }
    });
    return val;
};

console.log( getValue( "description" ) ); //output: value i need
console.log( getValue( "tags" ) ); //output: value i dont need
console.log( getValue( "h1" ) ); //output: value i dont need

WORKING JSFIDDLE DEMO

答案 1 :(得分:2)

如果它将成为来自某个服务器的随机对象,那么只需要迭代该对象并比较您需要的对象,

for(i in data.page.property)
{
     if(data.page.property[i].value && data.page.property[i].value === "your value")
        // do your stuff
}

答案 2 :(得分:1)

迭代property - 数组,直到找到value字段。然后阅读

答案 3 :(得分:0)

var prop = data.page.property
for(k in prop)
{
  if(prop[k].name == 'name you are interested')
    var v = prop[k].value || someDefaultValue; 
    // do something about v
}

答案 4 :(得分:0)

纯Javascript代码

for (var k in json.page.property) {
    var o = json.page.property[k];
    if (o.value) alert(o.value); //Make sure it only alerts if there is value
}

Demo Fiddle

答案 5 :(得分:0)

希望您需要的值是属性对象的最后一个成员,

var len = Object.keys(json.page.property).length;
var myValue =json.page.property[len].value ;
console.log(myValue); // prints "value i need"