Пары ключ-значение с использованием JSON - PullRequest
16 голосов
/ 15 сентября 2010

Есть ли способ обработки структур данных с использованием объекта JSON в виде пар ключ / значение?
Если это так, может кто-нибудь разработать, как получить доступ к связанному объекту значения из ключа

Предположим, что яесть что-то вроде этого

KEY1 |  VALUE OBJECT1 - (NAME: "XXXXXX", VALUE:100.0)  
KEY2 |  VALUE OBJECT2 - (NAME: "YYYYYYY", VALUE:200.0)  
KEY3 |  VALUE OBJECT3 - (NAME: "ZZZZZZZ", VALUE:500.0)  

Ответы [ 4 ]

20 голосов
/ 15 сентября 2010

«Объект JSON» на самом деле оксюморон. JSON - это текстовый формат, описывающий объект, а не реальный объект, поэтому данные могут быть в форме JSON или десериализованы в объект.

JSON для этого будет выглядеть так:

{"KEY1":{"NAME":"XXXXXX","VALUE":100},"KEY2":{"NAME":"YYYYYYY","VALUE":200},"KEY3":{"NAME":"ZZZZZZZ","VALUE":500}}

После того, как вы проанализировали JSON в объект Javascript (в приведенном ниже коде он называется data), вы можете, например, получить доступ к объекту для KEY2 и его свойствам:

var obj = data.KEY2;
alert(obj.NAME);
alert(obj.VALUE);

Если у вас есть ключ в виде строки, вы можете использовать индексную нотацию:

var key = 'KEY3';
var obj = data[key];
10 голосов
/ 15 сентября 2010
var object = {
    key1 : {
        name : 'xxxxxx',
        value : '100.0'
    },
    key2 : {
        name : 'yyyyyyy',
        value : '200.0'
    },
    key3 : {
        name : 'zzzzzz',
        value : '500.0'
    },
}

Если так выглядит ваш объект, и вы хотите зациклить каждое имя и значение, я бы попробовал сделать что-то вроде.

$.each(object,function(key,innerjson){
    /*
        key would be key1,key2,key3
        innerjson would be the name and value **
    */

    //Alerts and logging of the variable.
    console.log(innerjson); //should show you the value    
    alert(innerjson.name); //Should say xxxxxx,yyyyyy,zzzzzzz
});
8 голосов
/ 15 сентября 2010

JSON (= J ava S cript O bject N otation), легкий быстрый механизм для преобразования объектов Javascript в строку и наоборот.

Поскольку объекты Javascripts состоят из key/value пар, его очень легко использовать и получить доступ к JSON таким образом.

Итак, если у нас есть объект:

var myObj = {
    foo:   'bar',
    base:  'ball',
    deep:  {
       java:  'script'
    }
};

Мы можем преобразовать это в строку, вызвав window.JSON.stringify(myObj); с результатом "{"foo":"bar","base":"ball","deep":{"java":"script"}}".

Наоборот, мы бы назвали window.JSON.parse("a json string like the above");.

JSON.parse() возвращает объект / массив javascript в случае успеха.

alert(myObj.deep.java);  // 'script'

window.JSON доступно не во всех браузерах. Некоторым «старым» браузерам нужен небольшой плагин javascript, который предлагает вышеупомянутую функциональность. Проверьте http://www.json.org для получения дополнительной информации.

4 голосов
/ 12 сентября 2016

Я вижу то, что вы пытаетесь спросить, и я думаю, что это самый простой ответ на то, что вы ищете, учитывая, что вы можете не знать, сколько пар ключей вы отправляете.

ПростойСтруктура пары ключей JSON

var data = {
    'XXXXXX' : '100.0',
    'YYYYYYY' : '200.0',
    'ZZZZZZZ' : '500.0',
}

Использование кода JavaScript для доступа к парам ключей

for (var key in data) 
  { if (!data.hasOwnProperty(key))
    { continue; } 
    console.log(key + ' -> ' +  data[key]);
  };

Вывод на консоль должен выглядеть следующим образом

XXXXXX -> 100.0 
YYYYYYY -> 200.0 
ZZZZZZZ -> 500.0

Вот JSFiddle , чтобы показать, как это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...