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


75
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;

},

如您所见,该回调函数从控制器$.ajax获取JSON数据。

例如:

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

在这种情况下,我的第一个警报未定义,而第二个/第三个警报弹出框显示:

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

如何按名称访问值,以便我的第一个警报填写的myName值是name

Answers:


111

代替解析JSON,您可以执行以下操作:

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

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

data[0].name;

data[0].address;

为什么需要data[0]数据,因为数据是一个数组,所以需要对其内容进行检索data[0](第一个元素),它为您提供了一个object {"name":"myName" ,"address": "myAddress" }

而访问对象规则的属性是:

Object.property

有时

Object["property"] // in some case

所以你需要

data[0].name 等等得到您想要的。


如果没有

设置,dataType: json则需要使用解析它们,$.parseJSON()并像上面一样检索数据。


maps.googleapis.com/maps/api/geocode/… 从此网址中如何获取变量中的“ formatted_address”字段值?成功:函数(数据){地址=数据['formatted_address'];}引发错误
user3816325

有没有更优化的方法呢?如果我有一个包含20个以上名称的json列表,并且我需要显示它们的值,但是我不知道在json中是否返回其中一个,则可能是一个,三个或10个或全部20个它们,我是否应该对其中每个重复相同的操作,例如:if data[0].name : console.log(data[0].name); if data[0].adress : console.log(data[0].adress); ..
Armance

可以data[0].[0]工作,访问name吗?像数组一样看它。
马尔科姆·萨尔瓦多

29

您收到的JSON是字符串形式。您必须将其转换为JSON对象您已经注释了最重要的代码行

data = JSON.parse(data);

或者,如果您使用的是jQuery

data = $.parseJSON(data)

即使取消注释该行,我也会收到不确定的信息
RollerCosta

那是因为您的JSON是一个数组。尝试使用data [0] .name而不是data.name。并确保您获得财产并不看重即数据[0]。名称(属性),而不是你在做什么在你的问题data.myName(这是值)
UP

15

如果你的回应就像 {'customer':{'first_name':'John','last_name':'Cena'}}

var d = JSON.parse(response);
alert(d.customer.first_name); // contains "John"

谢谢,


嗨,如果我想提取“客户”,那么当客户是我想要的东西时,我将如何做呢?就我而言,我想将下面的aboutme.jpg提取为字符串b'{“ _ id”:“ 2”,“ _ rev”:“ 5-760e627e77645e960c5cc40ea6cf03a2”,“ _ attachments”:{“ aboutme.jpg”:{“ content_type “:”图像/ JPEG”, “revpos”:3, “消化”: “MD5-mG5uU4IRGuY / f9PbZ8AIbQ ==”, “长度”:98831, “存根”:真}}} \ N”
安德鲁欧文


4

试试这个代码。

function (data) {


var json = jQuery.parseJSON(data);
alert( json.name );


}

我之前尝试过并收到错误Microsoft JScript运行时错误:对象不支持属性或方法'parseJSON'–
RollerCosta

2

我认为您应该dataType: 'json' 在ajax配置中提及并访问该值:

data[0].name

2

您可能要尝试这种方法:

var  str ="{ "name" : "user"}";
var jsonData = JSON.parse(str);     
console.log(jsonData.name)
//Array Object
str ="[{ "name" : "user"},{ "name" : "user2"}]";
jsonData = JSON.parse(str);     
console.log(jsonData[0].name)

0

这是一条友好的建议。使用Chrome开发者工具Firebug之类的工具Firefox的检查您的Ajax调用和结果。

您可能还需要花费一些时间来理解诸如Underscore之类的帮助程序库,该库是对jQuery的补充,并为您提供了60多种有用的函数来使用JavaScript处理数据对象。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.