如何访问JSON对象名称/值?

Rol*_*sta 69 ajax jquery json asp.net-mvc-3

function (data) {
    //add values based on activity type
    //data = JSON.parse(data);
    //alert(abc.Phone1);

    alert(data.myName)

    alert(data.toString());
    if (activityType == "Phone") {
    }
    return;

},
Run Code Online (Sandbox Code Playgroud)

正如您可以看到从控制器$.ajax获取JSON数据的回调函数.

例如:

[{"name":"myName" ,"address": "myAddress" }]

在这种情况下,我的第一个警报给我未定义和第二/第三个警报弹出窗口提出:

[{"name":"myName" ,"address": "myAddress" }]

如何通过名称访问值,以便我的第一个警报填写的myName值是name什么?

the*_*dox 103

而不是解析JSON你可以像followng一样:

$.ajax({
  ..
  dataType: 'json' // using json, jquery will make parse for  you
});
Run Code Online (Sandbox Code Playgroud)

要访问JSON的属性,请执行以下操作:

data[0].name;

data[0].address;
Run Code Online (Sandbox Code Playgroud)

为什么你需要data[0]因为数据是一个数组,所以它需要的内容检索data[0](第一个元素),它给你一个对象{"name":"myName" ,"address": "myAddress" }.

并且访问对象规则的属性是:

Object.property
Run Code Online (Sandbox Code Playgroud)

或者有时候

Object["property"] // in some case
Run Code Online (Sandbox Code Playgroud)

所以你需要

data[0].name 等等,得到你想要的东西.


如果你不是

设置dataType: json那么你需要他们使用解析$.parseJSON(),并像上面检索数据.


U.P*_*U.P 29

您收到的JSON是字符串.您必须将其转换为JSON对象您已经评论了最重要的代码行

data = JSON.parse(data);
Run Code Online (Sandbox Code Playgroud)

或者如果你使用的是jQuery

data = $.parseJSON(data)
Run Code Online (Sandbox Code Playgroud)


Mah*_*rai 10

如果你的反应是这样的 {'customer':{'first_name':'John','last_name':'Cena'}}

var d = JSON.parse(response);
alert(d.customer.first_name); // contains "John"
Run Code Online (Sandbox Code Playgroud)

谢谢,


Nic*_*tti 6

你应该做

alert(data[0].name); //Take the property name of the first array
Run Code Online (Sandbox Code Playgroud)

并不是

 alert(data.myName)
Run Code Online (Sandbox Code Playgroud)

jQuery应该能够为你嗅探dataType,即使你没有设置它也不需要JSON.parse.

在这里小提琴

http://jsfiddle.net/H2yN6/