2012-05-19 81 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檢索第二個數組。

NAME不是屬性。相反,它是分配給數組的值。

爲了幫助您瞭解如何訪問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   "