对于这个简单的问题我很抱歉。我刚开始使用JSON和JS。
我有‘fucts.json’:
{
"Apples": {
"Apples_pos1": 501.82,
"Apples_pos2": 502.61,
"Apples_pos3": 502.61,
"Apples_pos4": 502.16,
},
"Bananas": {
"Bananas_pos1": 495.73,
"Bananas_pos2": 493.27,
"Bananas_pos3": 493.38,
"Bananas_pos4": 494.34,
},
"Oranges": {
"Oranges_pos1": 497.35,
"Oranges_pos2": 497.31,
"Oranges_pos3": 498.03,
"Oranges_pos4": 496.67,
},
"Pears": {
"Pears_pos1": 497.62,
"Pears_pos2": 498.46,
"Pears_pos3": 497.54,
"Pears_pos4": 497.95,
},我想调用'fruits.json‘并重新格式化它,如下所示:
[["Apples", 501.82, "Apples_pos1"],
["Apples", 502.61, "Apples_pos2"],
["Apples", 502.61, "Apples_pos3"],
["Apples", 502.16, "Apples_pos4"],
["Bananas", 495.73, "Bananas_pos1"],
["Bananas", 493.27, "Bananas_pos2"],
["Bananas", 493.38, "Bananas_pos3"],
["Bananas", 494.34, "Bananas_pos4"],
["Oranges", 497.35, "Oranges_pos1"],
["Oranges", 497.31, "Oranges_pos2"],
["Oranges", 498.03, "Oranges_pos3"],
["Oranges", 496.67, "Oranges_pos4"],
["Pears", 497.62, "Pears_pos1"],
["Pears", 498.46, "Pears_pos2"],
["Pears", 497.54, "Pears_pos3"],
["Pears", 497.95, "Pears_pos4"]]目前,我使用此函数来调用JSON:
function retrieveJSON(jsonpath, callback) {
$.ajax({
type: "GET",
url: jsonpath,
dataType: "json",
success: function (data) {
console.log("success");
callback(data);
},
error: function (response) {
console.log("error");
console.log(response);
callback({"error": "!!!!"});
}
});
}
document.addEventListener('DOMContentLoaded', function () {
let url = window.location;
let baseURL = url.protocol + "//" + url.host;
retrieveJSON(baseURL + "/static/json/fruits.json", (json_data) => {
console.log(json_data);
});
});对于如何在调用JSON之后将其重新格式化为我想要的格式,有什么建议吗?
发布于 2020-03-31 07:13:39
您可以尝试在运行Object.keys / Object.entries的同时运行array.reduce()
let input = {
"Apples": {
"Apples_pos1": 501.82,
"Apples_pos2": 502.61,
"Apples_pos3": 502.61,
"Apples_pos4": 502.16,
},
"Bananas": {
"Bananas_pos1": 495.73,
"Bananas_pos2": 493.27,
"Bananas_pos3": 493.38,
"Bananas_pos4": 494.34,
},
"Oranges": {
"Oranges_pos1": 497.35,
"Oranges_pos2": 497.31,
"Oranges_pos3": 498.03,
"Oranges_pos4": 496.67,
},
"Pears": {
"Pears_pos1": 497.62,
"Pears_pos2": 498.46,
"Pears_pos3": 497.54,
"Pears_pos4": 497.95,
}
};
let output = Object.keys(input).reduce((acc, outerKey) => {
for(let [key, value] of Object.entries(input[outerKey])){
acc.push([outerKey, value, key.split('_')[1]]);
}
return acc;
}, []);
console.log(output);
发布于 2020-03-31 07:27:48
您可以使用for...in循环或任何类型的循环来实现这一点。然后通过执行data[nameOfKey]从数据中查找值。
const fruitList = {
"Apples": {
"Apples_pos1": 501.82,
"Apples_pos2": 502.61,
"Apples_pos3": 502.61,
"Apples_pos4": 502.16,
},
"Bananas": {
"Bananas_pos1": 495.73,
"Bananas_pos2": 493.27,
"Bananas_pos3": 493.38,
"Bananas_pos4": 494.34,
},
"Oranges": {
"Oranges_pos1": 497.35,
"Oranges_pos2": 497.31,
"Oranges_pos3": 498.03,
"Oranges_pos4": 496.67,
},
"Pears": {
"Pears_pos1": 497.62,
"Pears_pos2": 498.46,
"Pears_pos3": 497.54,
"Pears_pos4": 497.95,
},
}
function reformat(fruitList) {
let formattedFruits = "";
for (fruit in fruitList) {
for (fruitPosName in fruitList[fruit]) {
const fruitValue = fruitList[fruit][fruitPosName];
formattedFruits += `\n {"${fruit}", ${fruitValue}, "${fruitPosName}"}`
}
}
return formattedFruits
}
console.log(reformat(fruitList))
https://stackoverflow.com/questions/60940972
复制相似问题