AJAX:如何读取JSON数据

时间:2018-05-11 17:38:41

标签: javascript arrays json ajax object

我正在尝试从url获取json数据。这是js

var myRequest = new XMLHttpRequest();
  myRequest.open('GET', 'URL that has JSON format');
  myRequest.onload = function() {
    var myData = JSON.parse(myRequest.responseText);
    console.log(myData);
  };
myRequest.send();

JSON数据格式是这样的

"ING":
    [
        {
            "#":1,
            "Team":"Manchester City",
            "Main":37,
            "Poin":97
        },
        {
            "#":2,
            "Team":"Manchester United",
            "Main":37,
            "Poin":78
        },
        {
            "#":3,
            "Team":"Tottenham Hotspur",
            "Main":37,
            "Poin":74
        },
        {
            "#":4,
            "Team":"Liverpool",
            "Main":37,
            "Poin":72
        },
        {
            "#":5,
            "Team":"Chelsea",
            "Main":37,
            "Poin":70
        }
    ]
}

例如我想要获取Chealsea。我怎样才能实现这一目标?我知道我必须改变

  

的console.log(MYDATA的);

我该怎么办?感谢

4 个答案:

答案 0 :(得分:1)

您可以使用find()查找数组中的内容。我和利物浦一起改变了切尔西,因为他们今年将赢得冠军联赛。谁关心另一支球队......



let obj = {"ING":
    [
        {
            "#":1,
            "Team":"Manchester City",
            "Main":37,
            "Poin":97
        },
        {
            "#":2,
            "Team":"Manchester United",
            "Main":37,
            "Poin":78
        },
        {
            "#":3,
            "Team":"Tottenham Hotspur",
            "Main":37,
            "Poin":74
        },
        {
            "#":4,
            "Team":"Liverpool",
            "Main":37,
            "Poin":72
        },
        {
            "#":5,
            "Team":"Chelsea",
            "Main":37,
            "Poin":70
        }
    ]
}
console.log(obj.ING.find(e => e.Team === 'Liverpool'));




答案 1 :(得分:1)

您可以使用callback,promises或async / await。这是一种可以使用回调来获取和使用检索数据的方法:

function getUrl(url, callback) {
  var myRequest = new XMLHttpRequest();
  myRequest.open('GET', url);
  myRequest.onload = function() {
    var myData = JSON.parse(myRequest.responseText);
    console.log(myData);
    callback(myData);
  };
  myRequest.send();
}

您可以像这样请求和使用您的数据:

getUrl('URL for JSON DATA', function(data) {
  // find chealsea
  var chealsea = data.ING.find(function(entry) { return entry.Team === 'Chealsea' });
  console.log(chealsea);
});

答案 2 :(得分:1)

阅读JSON。 注意括号类型

如果它有[],则将该部分视为数组,如果它具有花括号{3,则作为对象。

访问Array对象,使用索引,如0,1,2 ...... 要访问对象,您可以使用点符号your_object.keyyour_object["key"]

in your case, we can read it like

let json = {"ING":[{...}]}

json["ING"][0]["SOME_KEY"] ...

答案 3 :(得分:0)

试试这个:



var myData = {
	"ING": [{
			"#": 1,
			"Team": "Manchester City",
			"Main": 37,
			"Poin": 97
		},
		{
			"#": 2,
			"Team": "Manchester United",
			"Main": 37,
			"Poin": 78
		},
		{
			"#": 3,
			"Team": "Tottenham Hotspur",
			"Main": 37,
			"Poin": 74
		},
		{
			"#": 4,
			"Team": "Liverpool",
			"Main": 37,
			"Poin": 72
		},
		{
			"#": 5,
			"Team": "Chelsea",
			"Main": 37,
			"Poin": 70
		}
	]
};

var res = myData.ING.filter(obj => obj.Team == "Chelsea");

console.log(res[0].Team);