在javascript中解析具有未知字段名称的json数组

时间:2013-04-13 13:45:05

标签: javascript jquery json

我在StackOverflow上发现了很多关于解析json数组的线程,但我似乎无法弄清楚如何找回一些数据。这就是我的......

    $('#keyword_form').submit(function(e){  
        var gj = $.post('employee_search.php',$('#keyword_form').serialize(),function(data){                
            if(!data || data.status !=1 )
            {
                alert(data.message);
                return false;
            }
            else
            {
                alert(data.message);
            }
        },'json');  
        e.preventDefault();

    });

发送给它的json数据看起来像这样......

{
    "status":1,
    "message":"Query executed in 9.946837 seconds.",
    "usernames_count":{
        "gjrowe":5,
        "alisonrowe":4,
        "bob":"1"
    }
}

我的功能显示我可以alert(data.message);,但如何访问usernames_count数据?

我的困惑来自数据没有名称/标签的事实。 bob是用户名,1是与该用户名相关联的返回计数

如果我alert(usernames_count);,我会回来[object Object]

如果我alert(usernames_count[0]);,我会回来undefined

我确信我应该对JSON.parse();采取行动,但我还没有做好

3 个答案:

答案 0 :(得分:4)

试试这个:

$.each(data.usernames_count, function(username, val) {
    alert(username+" has a value of "+val);
});

答案 1 :(得分:4)

您可以使用Object.keysfor…in循环 - 请记住在这种情况下使用hasOwnProperty

var users = data.usernames_count;
Object.keys(users).forEach(function(user) {
    console.log(user, users[user]);
});

答案 2 :(得分:-1)

听起来你的问题是如何迭代usernames_count对象中的条目。你可以这样做:

var key = '';
for(key in data.usernames_count) {

    //check that this key isn't added from the prototype
    if(data.usernames_count.hasOwnProperty(key) {
        var value = data.usernames_count[key];

        //do something with the key and value
    }
}