JSON对象访问值

时间:2019-11-25 02:47:40

标签: javascript json

这是我的JSON响应:

joueur

如何在JavaScript中访问姓名,纬度和经度?

我尝试使用此方法,它显示数据,但我无法访问所需的属性:

{
    "2f2EdLjYHcTx4APbgnlvE2SCXQb2": {
        "name": "test",
        "latitute": 7.4866174,
        "longitute": 80.3637889
    },
    "pJua8KSpMwSXiSlWJcDE4sEkOuZ2": {
        "name": "akalanka",
        "latitute": 7.4866198,
        "longitute": 80.3638016
    }
}

3 个答案:

答案 0 :(得分:0)

代码中的两个问题:

1)您使用的xmlHttp错误。

您正在发送请求,但直接解析结果(无需等待请求成功)。

xmlHttp.open( "GET", "http://localhost:3000/get/json", false );
xmlHttp.send();

xmlHttp.onload = function () {
 // Request finished. Do processing here.
};

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send

2)您需要使用密钥来访问“ latitute”。

Object.keys(x).forEach(field => {
  console.log(x[field].latitute);
  console.log(x[field].longitute);
});

所以它应该像这样:

xmlHttp.open( "GET", "http://localhost:3000/get/json", false );
xmlHttp.send();

xmlHttp.onload = function () {
  var x = JSON.parse(xmlHttp.responseText);
  Object.keys(x).forEach(field => {
    console.log(x[field].latitute);
    console.log(x[field].longitute);
  });
};

答案 1 :(得分:0)

首先,请确认您已经使用onreadystate方法获得了responseText。

在那之后,请尝试这个。

var responseText = `{"2f2EdLjYHcTx4APbgnlvE2SCXQb2":{"name":"test","latitute":7.4866174,"longitute":80.3637889},"pJua8KSpMwSXiSlWJcDE4sEkOuZ2":{"name":"akalanka","latitute":7.4866198,"longitute":80.3638016}}`;

var x = JSON.parse(responseText);

console.log(x);

Object.keys(x).forEach(field => {
  console.log(x[field].name);
});

答案 2 :(得分:0)

请注意,您的属性拼写错误的longitutelatitute ... te ?应该是 de

我会将非标准的UID密钥转换为简单的 Array
使用提取API的快速示例:

const myMap = (data) => {
  console.log(`lat:${data.latitute}, lng:${data.longitute}`)
};

const fetchMapData = async () => {
  const response = await fetch('https://jsbin.com/mijopocunu/js');
  const json = await response.json();
  const dataArr = Object.keys(json).map(k => (json[k].id = k, json[k]));
  dataArr.forEach(myMap);
};

fetchMapData();