获取 JSON 数据将数组项添加到变量

getJSON data add array item to variable

本文关键字:添加 变量 数组 JSON 数据 获取      更新时间:2023-09-26

我正在使用此脚本将JSON数据从文件检索到我的页面。

$.getJSON('json/data.json', function(data) {
  $('#getJSON-results').html(JSON.stringify(data)); 
});
<div id="getJSON-results"></div>

现在,它只是将JSON文件中的所有数据显示为页面上的字符串。如何从 JSON 文件中获取数据并将每个数组放入变量中?我在 JSON 文件中的数据如下所示:

[{"target": "summarize(first, '"1d'", '"sum'")", "datapoints": [[38.393148148148143, 1423958400], [90.800555555555633, 1424044800], [159.06037037037032, 1424131200], [245.5933333333335, 1424217600], [126.94796296296299, 1424304000], [120.37111111111113, 1424390400], [103.04148148148151, 1424476800], [99.273796296296368, 1424563200], [89.38203703703708, 1424649600], [92.970462962963012, 1424736000], [105.62666666666664, 1424822400], [110.33962962962967, 1424908800], [118.54981481481482, 1424995200], [100.08018518518523, 1425081600], [92.52277777777779, 1425168000], [98.647619047618974, 1425254400], [94.585000000000008, 1425340800], [85.568796296296284, 1425427200], [157.82222222222222, 1425513600], [109.7596296296296, 1425600000], [112.53324074074077, 1425686400], [89.392592592592649, 1425772800], [97.253518518518518, 1425859200], [73.424629629629635, 1425945600], [92.377592592592578, 1426032000], [76.117870370370397, 1426118400], [77.83953703703699, 1426204800], [66.643518518518533, 1426291200], [63.748055555555531, 1426377600], [137.30018518518517, 1426464000], [53.480648148148134, 1426550400]]},
{"target": "summarize(second, '"1d'", '"sum'")", "datapoints": [[2.7291600529100535, 1423958400], [5.7797089947089892, 1424044800], [3.4261574074074059, 1424131200], [5.0516335978835958, 1424217600], [6.2272420634920582, 1424304000], [11.752605820105822, 1424390400], [7.8688624338624269, 1424476800], [5.7305555555555525, 1424563200], [5.2784391534391499, 1424649600], [6.4652380952380897, 1424736000], [4.7690277777777741, 1424822400], [4.1451587301587258, 1424908800], [8.4178902116402039, 1424995200], [4.7948611111111061, 1425081600], [4.8153835978835939, 1425168000], [5.3873148148148111, 1425254400], [7.2819378306878262, 1425340800], [5.2084391534391488, 1425427200], [8.098492063492051, 1425513600], [5.6563822751322697, 1425600000], [5.3091468253968195, 1425686400], [4.7850396825396793, 1425772800], [3.8716931216931179, 1425859200], [3.1934325396825369, 1425945600], [3.2083531746031722, 1426032000], [3.3434391534391512, 1426118400], [3.6162235449735438, 1426204800], [3.2094179894179891, 1426291200], [2.3699537037037026, 1426377600], [4.3973544973544945, 1426464000], [2.1901388888888893, 1426550400]]}, 
{"target": "summarize(third, '"1d'", '"sum'")", "datapoints": [[5.3710185185185182, 1423958400], [11.25367724867724, 1424044800], [8.2990079365079268, 1424131200], [8.710694444444437, 1424217600], [9.6381216931216898, 1424304000], [9.3845105820105807, 1424390400], [9.7305820105820047, 1424476800], [8.6268055555555474, 1424563200], [10.589166666666673, 1424649600], [10.235462962962957, 1424736000], [10.455892857142853, 1424822400], [14.282407407407405, 1424908800], [17.774404761904758, 1424995200], [18.154120370370364, 1425081600], [16.249543650793651, 1425168000], [15.29764550264551, 1425254400], [16.267671957671972, 1425340800], [20.121488095238096, 1425427200], [27.007685185185196, 1425513600], [17.577962962962971, 1425600000], [17.020873015873018, 1425686400], [14.627685185185191, 1425772800], [15.824821428571433, 1425859200], [11.837579365079364, 1425945600], [13.292539682539683, 1426032000], [12.064074074074073, 1426118400], [12.279457671957676, 1426204800], [9.3799074074073978, 1426291200], [7.8777314814814732, 1426377600], [13.161825396825407, 1426464000], [7.2587499999999956, 1426550400]]}]

我是使用 JSON 的新手,也非常感谢有关我正在采用的方法的任何建议。

我现在如何使这些数据可以在getJSON之外访问?

    $.getJSON('json/data.json', function(data) {
      yourData = data;
      makeMeGlobal = yourData[0]; 

    });
     console.log(makeMeGlobal.datapoints);

将函数更改为以下内容将生成一个可以正常引用的对象:

$.getJSON('json/data.json', function(data) {
  yourData = data;
});

然后,您可以获得第一组数据点,如下所示:

yourData.datapoints[0]

应该是:

 data.forEach(function (obj) {
     // obj now has each JSON object in this array
     var test = obj.target;
 }

当您从 AJAX 获取 JSON 时,它已经准备好在浏览器中使用。这是在XML上使用JSON的好处之一。

它已经是一个数组,因为原始的JSON字符串是由jQuery解析的。如果使用 stringify ,您将获得一个包含表示数组的 JSON 的string(对您的目的没有用,因为它与服务器返回的字符串相同)。

例如:

$.getJSON('json/data.json', function(data) {
    // Here, data is already an array.
    var data_length = data.length;
    for (var i = 0; i < data_length; i++) {
        var obj = data[i]; // Here we have an object from the array
        alert("I have an object which target is " + obj.target);
    }
});

您需要遍历 json 以检索所需的值并附加 html。更多信息@https://stackoverflow.com/a/18238241/909535 像这样的东西

`$.getJSON('json/data.json', function(data){
 data.forEach(
                    function(val, index, array) {
                        //val.target will have target attribute's value
                        //val.datapoints is a array which you can iterate   
                    }
                );
            }
    );`