Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理JSON_Javascript_Json - Fatal编程技术网

Javascript 处理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": {

我很抱歉问这么简单的问题。我不熟悉JSON和JS

我有“fruits.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后,有没有关于如何将其重新格式化为所需格式的建议?

您可以尝试使用/:

让输入={
“苹果”:{
“苹果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,}?如果密钥包含“