Json Parse for an Integer 作为 Javascript 中的键

我已经搜索了将近 2 小时,但找不到任何使用整数作为键的人。我的 json 对象看起来像:


{"342227492064425":

    {"added":"2020-10-04T23:02:28.030432",

     "listed":"2020-10-04T23:02:28.030432",

     "subscribed":"2020-10-04T23:02:28.030432"},

"342731155590705":

    {"added":"2020-10-04T23:02:28.030432",

     "listed":"2020-10-04T23:02:28.030432",

     "subscribed":"2020-10-04T23:02:28.030432"}

}

我该如何解析这个??我尝试使用 data.map 并使用 for 循环(data.length),但都是徒劳的。请帮忙。


我的尝试:


fetch(url).then((response)=>{

        return response.json();

    }).then((data)=>{

    for(var i = 0; i < data.length; i++) {

        subscription += data[i].subscribed

        //data.length doesn't work

    }

}

编辑:我想在我的 HTML 代码中使用它。我也不知道 json 文件中会有多少数字,所以我想输出一个我可以使用的地图:data[0].susbcribed。在这里,我想知道 var i 需要多长时间。


慕容708150
浏览 235回答 3
3回答

潇潇雨雨

看起来像整数的键没有什么特别之处。在 JavaScript 中,属性名总是字符串,它们看起来像大整数这一事实无关紧要。就像对待任何其他对象一样对待它。您可以使用Object.keys()获取属性名称数组、Object.values()获取属性值数组以及Object.entries()获取名称和值的二维数组。Object.entries(data).forEach(([key,&nbsp;value])&nbsp;=>&nbsp;console.log(`${key}&nbsp;added&nbsp;on&nbsp;${value.added}`);

回首忆惘然

您正在尝试从一个对象访问 .map() ,您要做的是将您的对象变成一个数组:const data = {&nbsp; &nbsp; 342227492064425: {&nbsp; &nbsp; &nbsp; &nbsp; added: "2020-10-04T23:02:28.030432",&nbsp; &nbsp; &nbsp; &nbsp; listed: "2020-10-04T23:02:28.030432",&nbsp; &nbsp; &nbsp; &nbsp; subscribed: "2020-10-04T23:02:28.030432",&nbsp; &nbsp; },&nbsp; &nbsp; 342731155590705: {&nbsp; &nbsp; &nbsp; &nbsp; added: "2020-10-04T23:02:28.030432",&nbsp; &nbsp; &nbsp; &nbsp; listed: "2020-10-04T23:02:28.030432",&nbsp; &nbsp; &nbsp; &nbsp; subscribed: "2020-10-04T23:02:28.030432",&nbsp; &nbsp; },};//create the array which will hold all the values of the objectconst data_array = [];//loop through the object keys and store their values in data_arrayfor (let key of Object.keys(data)) {&nbsp; &nbsp; data_array.push(data[key]);}//now data_array[0].subscribed is accessibleconsole.log(data_array[0].subscribed);//map() is also accessibledata_array.map((item) => {&nbsp; &nbsp; /* logic */});

慕尼黑的夜晚无繁华

data.length您不能在对象中使用,应该用于计算字符串和/或数组长度中的字符数一个 Number,表示数组对象中元素的个数参考:JavaScript 数组长度属性如果您需要使用,我对您有一个建议,data.length所以基本上将您的对象推送到一个新数组。有很多方法可以做到这一点,例如    var data = [];var objects = {"342227492064425":    {"added":"2020-10-04T23:02:28.030432",     "listed":"2020-10-04T23:02:28.030432",     "subscribed":"2020-10-04T23:02:28.030432"},"342731155590705":    {"added":"2020-10-04T23:02:28.030432",     "listed":"2020-10-04T23:02:28.030432",     "subscribed":"2020-10-04T23:02:28.030432"}}// Convert Objects to Array via forEach function and Push methodObject.entries(objects).forEach((key, value) => data.push(key));数组值:console.log(data);输出:/*["342227492064425", {added: "2020-10-04T23:02:28.030432", listed: "2020-10-04T23:02:28.030432", subscribed: "2020-10-04T23:02:28.030432"}],["342731155590705", {added: "2020-10-04T23:02:28.030432", listed: "2020-10-04T23:02:28.030432", subscribed: "2020-10-04T23:02:28.030432"}]*/第一个 ID 值console.log(data[0][0])第二个 ID 值console.log(data[1][0])访问第一个对象值console.log(data[0][1].added)console.log(data[0][1].listed)console.log(data[0][1].subscribed)访问第二个对象值console.log(data[1][1].added)console.log(data[1][1].listed)console.log(data[1][1].subscribed)现在,您可以使用data.length输出是:(2)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript