Javascript 处理JSON
我很抱歉问这么简单的问题。我不熟悉JSON和JS 我有“fruits.json”:Javascript 处理JSON,javascript,json,Javascript,Json,我很抱歉问这么简单的问题。我不熟悉JSON和JS 我有“fruits.json”: { "Apples": { "Apples_pos1": 501.82, "Apples_pos2": 502.61, "Apples_pos3": 502.61, "Apples_pos4": 502.16, }, "Bananas": {
{
"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后,有没有关于如何将其重新格式化为所需格式的建议?您可以尝试使用/:
让输入={
“苹果”:{
“苹果1”:501.82,
“苹果2”:502.61,
“苹果3”:502.61,
“苹果4”:502.16,
},
“香蕉”:{
“香蕉1”:495.73,
“香蕉2”:493.27,
“香蕉3”:493.38,
“香蕉4”:494.34,
},
“橙子”:{
“橙子1”:497.35,
“橙子2”:497.31,
“橙子3”:498.03,
“橙子4”:496.67,
},
“梨”:{
“Pears_pos1”:497.62,
“梨2”:498.46,
“Pears_pos3”:497.54,
“Pears_pos4”:497.95,
}
};
让输出=对象。键(输入)。减少((acc,outerKey)=>{
for(让Object.entries的[key,value](输入[outerKey])){
acc.push([outerKey,value,key.split(“''[1]]);
}
返回acc;
}, []);
控制台日志(输出)代码>您可以尝试使用/:
让输入={
“苹果”:{
“苹果1”:501.82,
“苹果2”:502.61,
“苹果3”:502.61,
“苹果4”:502.16,
},
“香蕉”:{
“香蕉1”:495.73,
“香蕉2”:493.27,
“香蕉3”:493.38,
“香蕉4”:494.34,
},
“橙子”:{
“橙子1”:497.35,
“橙子2”:497.31,
“橙子3”:498.03,
“橙子4”:496.67,
},
“梨”:{
“Pears_pos1”:497.62,
“梨2”:498.46,
“Pears_pos3”:497.54,
“Pears_pos4”:497.95,
}
};
让输出=对象。键(输入)。减少((acc,outerKey)=>{
for(让Object.entries的[key,value](输入[outerKey])){
acc.push([outerKey,value,key.split(“''[1]]);
}
返回acc;
}, []);
控制台日志(输出)代码>您可以通过使用for…in循环或任何类型的循环来实现这一点。然后通过执行data[nameOfKey]
从数据中查找值
const水果列表={
“苹果”:{
“苹果1”:501.82,
“苹果2”:502.61,
“苹果3”:502.61,
“苹果4”:502.16,
},
“香蕉”:{
“香蕉1”:495.73,
“香蕉2”:493.27,
“香蕉3”:493.38,
“香蕉4”:494.34,
},
“橙子”:{
“橙子1”:497.35,
“橙子2”:497.31,
“橙子3”:498.03,
“橙子4”:496.67,
},
“梨”:{
“Pears_pos1”:497.62,
“梨2”:498.46,
“Pears_pos3”:497.54,
“Pears_pos4”:497.95,
},
}
函数重新格式化(结果列表){
让我们一起分享吧!“”;
用于(水果列表中的水果){
for(水果列表中的水果名[水果]){
const水果值=水果列表[水果][水果名];
formattedFruits+=`\n{{{fruit},${fruitValue},${fruitPosName}`
}
}
退货
}
log(重新格式化(结果列表))
您可以通过使用for…in循环或任何类型的循环来实现这一点。然后通过执行data[nameOfKey]
从数据中查找值
const水果列表={
“苹果”:{
“苹果1”:501.82,
“苹果2”:502.61,
“苹果3”:502.61,
“苹果4”:502.16,
},
“香蕉”:{
“香蕉1”:495.73,
“香蕉2”:493.27,
“香蕉3”:493.38,
“香蕉4”:494.34,
},
“橙子”:{
“橙子1”:497.35,
“橙子2”:497.31,
“橙子3”:498.03,
“橙子4”:496.67,
},
“梨”:{
“Pears_pos1”:497.62,
“梨2”:498.46,
“Pears_pos3”:497.54,
“Pears_pos4”:497.95,
},
}
函数重新格式化(结果列表){
让我们一起分享吧!“”;
用于(水果列表中的水果){
for(水果列表中的水果名[水果]){
const水果值=水果列表[水果][水果名];
formattedFruits+=`\n{{{fruit},${fruitValue},${fruitPosName}`
}
}
退货
}
log(重新格式化(水果列表))
您想要的格式是无效的JSON。你能再检查一下吗?你是说一组数组吗<代码>[“苹果”,501.82,“苹果”],[],…]
在主对象的属性和嵌套对象的属性上使用嵌套循环。@AnuragSrivastava是的,我指的是数组数组数组。谢谢。你可以访问路径所在的url,复制它,并用这个网站检查它是否为有效的JSON吗?你想要的格式是无效的JSON。你能再检查一下吗?你是说一组数组吗<代码>[“苹果”,501.82,“苹果”],[],…]
在主对象的属性和嵌套对象的属性上使用嵌套循环。@AnuragSrivastava是的,我指的是数组数组数组。谢谢。你可以访问路径所在的url,复制它,并在这个网站上检查它是否为有效的JSON吗。感谢您的快速响应。@dfahsjdahfsudaf另外,不要使用回调,返回$.ajax(…)
的结果,并使用检索JSON(…)。然后(回调)
。更加灵活和富有表现力地利用承诺。好的。非常感谢。有没有办法删除pos前的单词和下划线?因此,它将变成。。[[“Apples”,501.82,“pos1”],[“Apples”,502.61,“pos2”],[“Apples”,502.61,“pos3”],[“Apples”,502.16,“pos4”]?@plalx抱歉,还有一个问题!如果数据集类似于“Apples”:{“Apples\u pos1”:501.82,“Apples\u pos2”:502.61,“Apples”:502.61,“Apples”:502.16,}?如果密钥包含“