2012-05-19 4 views
1

Это, вероятно, будет легко, но мне нужно получить доступ к значениям в этом объекте JSON. Я понятия не имею, как это сделать. Вот объект:Значения доступа в объекте JSON

{ 
    "COLUMNS": ["NAME"], 
    "DATA": [["YOUNG, MARIA    "]] 
} 

Я надеялся, что «obj.NAME» будет делать это, но он говорит, что это не определено. Вот мой AJAX вызов:

$.ajax({ 
         //this is the php file that processes the data and send mail 
         url: 'components/Person.cfc', 

         //GET method is used 
         type: "POST", 

         //pass the data   
         data: { 
          method: "getGroup", 
          uid: $('#cardText').val() 
          }, 

         success: function(response) { 

          var obj = $.trim(response); 
          var obj = jQuery.parseJSON(obj); 
          $('#form_result').html(obj.NAME); 

         }, 

ответ

2

В своем коде, в следующем примере показано, как получить доступ к свойствам в данном конкретном объекте JSON:

alert(obj.COLUMNS[0]); // alerts the string "NAME". 

alert(obj.DATA[0][0]); // alerts "YOUNG, MARIA    " 

Чтобы понять, почему это выход, это важно понимать, и научиться читать нотации, что составляет JSON:

{} = object 

[] = array 

Ваш JSON:

{ 
    "COLUMNS": ["NAME"], 
    "DATA": [["YOUNG, MARIA    "]] 
} 

Поскольку внешняя часть представлена ​​фигурными фигурными скобками, мы знаем, что JSON представляет собой объект, а не массив. Объект имеет два свойства, оба из которых являются массивами, поскольку присвоенные им значения заключены в скобки.

Второе свойство, DATA, на самом деле представляет собой массив размером 1, который содержит другой массив размером 1, содержащий строку.

Наконец, в вашем коде вы пытаетесь получить доступ к NAME, которое является значением, а не свойством. JSON - последний момент, чтобы понять JSON, состоит в том, что все объекты представлены парами ключ/значение. Вы используете ключ для доступа к значению. obj.COLUMNS извлекает первый массив, а obj.DATA извлекает второй массив.

ИМЯ не является собственностью. Вместо этого это значение, присвоенное массиву.

Чтобы узнать, как получить доступ к JSON, ознакомьтесь со свойствами различных объектов. Кроме того, вы можете преобразовать существующие объекты обратно в JSON и отображать их в консоли, так что вы можете увидеть, как они структурированы в формате JSON:

var your_object = new Object(); 
your_object.name = "Bob"; 
your_object.skills = ["programmer","debugger","writer"]; 

console.info(JSON.stringify(your_object)); 

// this would convert the object to JSON. Going the other direction could help 
    // you further understand the concepts under the hood. Here is the output: 
{ "name" : "Bob", "skills" : [ "programmer" , "debugger" , "writer" ] } 
0

, как только вы запустите ваш объект через parseJSON вы будете иметь объект имеет двоих детей

myObj = parseJSON (yourJSONStringAbove); 
myObj.COLUMNS ; // this is an array containing one item whose value is "name" 
myObj.DATA; // this is an array of arrays, it contains one array which has one value 

so, myObj.data[0][0] ; // this is "YOUNG, MARIA   " 
Смежные вопросы