Json и динамический ключ

0

У меня есть объект 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); 

    }
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ

Поскольку это объект javascript, вы можете использовать метод jQuery $.each() для получения имен ключей:

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

Демо-скрипт @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 

Еще одно демо @скрипка


Описание о.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.

}
  • 0
    это работает, я получаю normalKey dynamicKey, как бы я назначил ключ 2 для переменной, не используя ее имя?
  • 0
    @ user3524311 см. обновленный ответ со ссылкой на скрипку, зачитайте комментарии в обновленном ответе.
Показать ещё 7 комментариев
2

когда пространство пришел во имя затем использовать [] Скоба обозначения шаблона

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
    [] называется скобка
  • 0
    спасибо :) @Satpal
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню