访问JSON对象中的值

时间:2012-05-19 02:22:30

标签: ajax 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 个答案:

答案 0 :(得分: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" ] }

答案 1 :(得分: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          "