Json和动态Key

时间:2014-04-30 06:18:05

标签: jquery json

我有一个基于用户交互动态创建的JSON对象,动态密钥每次都会改变

示例JSON

{
"normalkey": "John Smith",
"dynamickey ": "testing"
}

有没有办法在不知道密钥名称的情况下分配动态密钥名称。

$.ajax({
    type: "POST",
    url: ROOT+"controlpanel/menuBuilder",
    data: "clicked="+menu,
    dataType:"json",
    success: function(data)
    {   
        $('#foo').html(data.normalKey); 
        $('#bar').html(data.dynamicKey); 

    }

2 个答案:

答案 0 :(得分:2)

当空间出现时,请使用[] Bracket notation pattern

success: function(data)
    {   
        $('#foo').html(data["normal key"]); 
        $('#bar').html(data["dynamic key"]); 

    }

<强>更新 获得关键用途 jQuery.each

$.each(data, function(key, item){
       console.log(key); // here you get the key names
    });

答案 1 :(得分:1)

由于这是一个javascript对象,您可以使用jQuery的$.each()方法获取密钥名称:

success: function(data)
{   
    $.each(data, function(key, item){
       console.log(key); // this gets you the key names
    });
}

Demo @ Fiddle


根据你的评论

如何在不使用名称的情况下将键2分配给变量?

var o = {
    "normalkey": "John Smith",
    "dynamickey ": "testing"
};
var a = []; // declare an empty array.
$.each(o, function(key, item){
    a.push(key); // push the keys in it.
});
var dynkey = a.pop(); // .pop() gets you the dynamickey here as 
                      // this is the last item in the array.

console.log(dynkey); // this logs = dynamickey 

Another Demo @ Fiddle


关于.pop()@ MDN Docs:

的说明
  

pop方法从数组中删除最后一个元素,并将该值返回给调用者。


所以你最后的评论是:

success: function(data)
{   
   var a = [];
   $.each(data, function(key, item){
      a.push(key); // this gets you the key names
   });
   var dynkey = a.pop();

   $('#container').html(data[dynkey]); // <----here you have to do this.

}