如何在javascript中从接收到的REST API数组中提取值?

如何在javascript中从接收到的REST API数组中提取值?,javascript,arrays,json,rest,Javascript,Arrays,Json,Rest,我已经被困在这个问题上8个小时了,所以我终于发布了寻求帮助的帖子: 我试图从javascript文件中的RESTAPI响应中提取数据。REST API数据返回一个对象数组,如下所示: [{"start":"2017-04-21 14:40:00","hire":"no","address":"The Monument","offer_id":"z554"}, {"start":"2017-04-21 14:40:00","hire":"no","address":"The Gate","of

我已经被困在这个问题上8个小时了,所以我终于发布了寻求帮助的帖子:

我试图从javascript文件中的RESTAPI响应中提取数据。REST API数据返回一个对象数组,如下所示:

[{"start":"2017-04-21 14:40:00","hire":"no","address":"The 
Monument","offer_id":"z554"},
{"start":"2017-04-21 14:40:00","hire":"no","address":"The 
Gate","offer_id":"z123"},
{"start":"2017-04-21 14:40:00","hire":"yes","address":"The 
Port","offer_id":"z999"}] }
我需要从每个元素中提取地址值,以便将其作为参数传递给另一个名为updateAddressBook()的函数

据我所知,响应数据是JSON格式的,因此我必须将其解析为javascript对象,然后遍历数组并提取地址信息

$.get('http://xxxx/,
          function (data) {
              var obj = $.parseJSON(data);
              $.each(obj.data, function (index, value) {
                      updateAddressBook(address)
                          }
                     });
这个代码显然是错误的,但希望有人能告诉我哪里出了问题

非常感谢您的帮助,
谢谢

如果您的API发送的数据已经是JSON格式的,那么您不需要在收到响应时将其转换为对象,jquery会为您这样做。此外,还需要从迭代对象中获取address属性:value.address。代码应该是这样的

$.get('http://xxxx/',
    function (data) {
       $.each(data, function (index, value) {
           updateAddressBook(value.address)
       }
    });

另外,在JSON正确后,请尝试以下操作:

   $.getJSON('http://xxxx/', function (data) {
              $.each(data, function (index, value) {
                     updateAddressBook(value.address);
                });
     });

JSON的末尾有一个额外的}

一些观察结果:

  • 您的
    JSON
    不是有效的
    JSON

  • 它的结构应该是这样的

  • 如果响应是一个
    JSON对象
    ,则无需再次解析它。通过使用
    循环
    迭代JSON,可以直接访问地址

    演示

var jsonObj=[{
“开始”:“2017-04-21 14:40:00”,
“雇用”:“否”,
“地址”:“地址1”,
“纪念碑”:“纪念碑1”,
“报价id”:“z554”
},
{
“开始”:“2017-04-21 14:40:00”,
“雇用”:“否”,
“地址”:“地址2”,
“门”:“门2”,
“报价单id”:“z123”
}, {
“开始”:“2017-04-21 14:40:00”,
“雇佣”:“是”,
“地址”:“地址3”,
“端口”:8082,
“报价id”:“z999”
}
];
for(jsonObj中的变量i){
UpdatedDressbook(jsonObj[i].地址);
}
函数UpdatedDressbook(地址){
控制台日志(地址);

}
您在此处输入的JSON不是有效的JSON。不幸的是,这似乎不起作用,不确定原因。我试着发出警报(“测试”);在循环中,但它不会执行。如果我将alert语句放在$的正上方。每一行,我都会看到警报出现。如果在循环上方执行警报(数据),它会说什么?已设法将其修复,但还有另一个问题!value.address似乎未定义。如果我这样做:address=value.address;警报(地址);它弹出为未定义,并且没有地址被传递给另一个函数。知道为什么吗!?log(value)并查看它所说的话抱歉我犯了错误,现在一切都很好。非常感谢。