【问题标题】:How convert a JSON format to another using Javascript?如何使用 Javascript 将 JSON 格式转换为另一种格式?
【发布时间】:2017-05-12 10:21:38
【问题描述】:

我正在使用 Oracle JET 实现 datepicker。JET 食谱为我提供了具有如下 JSON 文件的示例 Datapicker。

 "Holidays": {
  "*": {
     "1": {
        "14": {
           "className": "holiday"

        },
        "26": {
           "className": "holiday"

        }
     }
   }

我从休息服务中获得的 Json 文件如下

 [
 {
     "YEAR":"2017",
     "MONTH":"1",
     "DAY":[
     {
         "N_DAYS":"25",
         "className":"holiday"
     },
     {
         "N_DAYS":"25",
         "className":"holiday"
     }
 ]

      },
  ];

如何转换从其他服务中获得的 JSON 文件,如 JET 食谱中提供的上述服务

【问题讨论】:

  • 你试过什么?您可以在问题中添加minimal reproducible example 吗?
  • 你试过任何代码吗?
  • 我累了。但没有成功。简单的格式效果很好
  • JSON.parse,两个嵌套循环构建新结构 JSON.stringify。然而,为了让 datepicker 再次解析对象而重新对对象进行字符串化有点愚蠢。示例日期选择器是一个示例,它可能也可以围绕您自己的日期表示进行扭曲。

标签: javascript json oracle-jet


【解决方案1】:

myStuff = [
  {
     "YEAR":"2017",
     "MONTH":"1",
     "DAY":[
       {
           "N_DAYS":"14",
           "className":"holiday"
       },
       {
           "N_DAYS":"26",
           "className":"holiday"
       }
    ]
  },
];

Holidays = {
  '*': { }
}

for (var i = 0; i < myStuff.length; i++) {
  var month = myStuff[i].MONTH;
  for (var j = 0; j < myStuff[i].DAY.length; j++) {
    if (typeof Holidays['*'][myStuff[i].MONTH] == 'undefined') {
      Holidays['*'][month] = {};
    }
    
    Holidays['*'][myStuff[i].MONTH][myStuff[i].DAY[j].N_DAYS] = {
      className: myStuff[i].DAY[j].className
    }
  }
}

Holidays = { Holidays: Holidays }
console.log(Holidays);

【讨论】:

  • 只是一种直觉,但我认为 '*' 是 YEAR 字段将被使用的地方。 (当它是'*'时,它意味着'所有年份')
  • 我是一个简单的人。我看到了我喜欢的输出示例)))
  • 非常感谢!!!! ,效果很好,感谢您的快速回复
【解决方案2】:

这是小提琴链接 https://fiddle.jshell.net/q80212b7/1/

   var myStuff= [ {
    "YYYY_YEAR" : "2013",
    "MMM_MONTH" : "06",
    "DAY_OUT" : {
      "DAY_OUT_ITEM" : {
        "N_DAYS" : "06",
        "CLASSNAME" : "Holiday",
        "TOOLTIP" : "Lalat Al Miraj"
      }
    }
  }, {
    "YYYY_YEAR" : "2017",
    "MMM_MONTH" : "06",
    "DAY_OUT" : {
      "DAY_OUT_ITEM" : [ {
        "N_DAYS" : "06",
        "CLASSNAME" : "Holiday",
        "TOOLTIP" : "Lalat Al Miraj"
      } ]
    }
  }, {
    "YYYY_YEAR" : "2013",
    "MMM_MONTH" : "01",
    "DAY_OUT" : {
      "DAY_OUT_ITEM" : [ {
        "N_DAYS" : "01",
        "CLASSNAME" : "Holiday",
        "TOOLTIP" : "New Year's Day"
      }, {
        "N_DAYS" : "24",
        "CLASSNAME" : "Holiday",
        "TOOLTIP" : "Milad Un Nabi"
      } ]
    }
  }, {
    "YYYY_YEAR" : "2017",
    "MMM_MONTH" : "01",
    "DAY_OUT" : {
      "DAY_OUT_ITEM" : [ {
        "N_DAYS" : "01",
        "CLASSNAME" : "Holiday",
        "TOOLTIP" : "New Year's Day"
      }, {
        "N_DAYS" : "24",
        "CLASSNAME" : "Holiday",
        "TOOLTIP" : "Milad Un Nabi"
      } ]
    }
  }];

   

Holidays = {
   'value': { }
}


 for (var i = 0; i < myStuff.length; i++) {
  var year = parseInt(myStuff[i].YYYY_YEAR,10);

 
 var month = parseInt(myStuff[i].MMM_MONTH,10);
  
  
 if (typeof Holidays['value'][myStuff[i].YYYY_YEAR] == 'undefined') {
  Holidays['value'][year] = {};
}
  if (typeof Holidays['value'][year][myStuff[i].MMM_MONTH] == 'undefined') {
  Holidays['value'][year][month] = {};

}
 if(myStuff[i].DAY_OUT.DAY_OUT_ITEM instanceof Array) {

 for (var j = 0; j < myStuff[i].DAY_OUT.DAY_OUT_ITEM.length; j++) {
 
  var day=parseInt(myStuff[i].DAY_OUT.DAY_OUT_ITEM[j].N_DAYS,10);
 Holidays['value'][year][month][day] = {
  className: myStuff[i].DAY_OUT.DAY_OUT_ITEM[j].CLASSNAME,
   tooltip: myStuff[i].DAY_OUT.DAY_OUT_ITEM[j].TOOLTIP
  };
  }
  }
  else
   {
 
  var day=parseInt(myStuff[i].DAY_OUT.DAY_OUT_ITEM.N_DAYS,10);
 Holidays['value'][year][month][day] = {
  className: myStuff[i].DAY_OUT.DAY_OUT_ITEM.CLASSNAME,
   tooltip: myStuff[i].DAY_OUT.DAY_OUT_ITEM.TOOLTIP
   };

  }
}



 Holidays = { Holidays: Holidays }
 console.log(JSON.stringify(Holidays.Holidays));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2021-09-16
    • 1970-01-01
    • 2018-01-20
    相关资源
    最近更新 更多