首页 > 解决方案 > 如何在 JavaScript 中将数组 api 响应转换为 json

问题描述

我有一个返回数据结构如下的 api:

//代码返回 response.status(200).json(startdate)

结果数据:

[
    "2020-01-16",
    "2020-01-18",
]

我希望这个 api 返回这样的结果:

Code: 200
Content:
{
    "availableDates": [
      "2017-11-24",
      "2017-11-27"
    ],
    "status": "SUCCESS",
    "message": ""
}

这是我的完整代码,我将数据作为数组获取

app.get('/api/getBusyDays',(request, response) =>{
    odoo.connect(function (err) {



        console.log(' OdooStartDate' + dateTimeStartUsed + 'OdooStopdate' + dateTimeEndUsed);
        var params1 = [];
        params1.push(inParams1);

        console.log(' search params '+ JSON.stringify(params1));
        odoo.execute_kw('calendar.event', 'search_read', params1, function (err, value) {
            if (err) { return console.log(err) }
            if(value) {
                if (value.length > 0) {


                    value.forEach(function(a) {
                        a.start_datetime = moment(a.start_datetime).format('YYYY-MM-DD');
                        a.stop_datetime = moment(a.stop_datetime).format('YYYY-MM-DD');
                    });

                    const startdate = [...new Set(value.map(val => val.start_datetime))];

                    startdate.sort();


                   // return response.status(200).json( value)

                    return response.status(200).json(startdate)
                }
            }

标签: javascriptarraysjavascript-objects

解决方案


你可以像这样创建一个对象:

let arrVal = [
  "2017-11-24",
  "2017-11-27"
];
// return Object or your framework (Express or KOA or) response Object
console.log({
  "Code": 200,
  "Content": {
    "availableDates": arrVal,
    "status": "SUCCESS",
    "message": ""
  }
})

更新

根据对此答案的评论,修改您的回复,使其如下所示:

app.get('/api/getBusyDays',(request, response) =>{
    odoo.connect(function (err) {



        console.log(' OdooStartDate' + dateTimeStartUsed + 'OdooStopdate' + dateTimeEndUsed);
        var params1 = [];
        params1.push(inParams1);

        console.log(' search params '+ JSON.stringify(params1));
        odoo.execute_kw('calendar.event', 'search_read', params1, function (err, value) {
            if (err) { return console.log(err) }
            if(value) {
                if (value.length > 0) {


                    value.forEach(function(a) {
                        a.start_datetime = moment(a.start_datetime).format('YYYY-MM-DD');
                        a.stop_datetime = moment(a.stop_datetime).format('YYYY-MM-DD');
                    });

                    const startdate = [...new Set(value.map(val => val.start_datetime))];

                    startdate.sort();


                   // return response.status(200).json( value)

                    return response.status(200).json({"code": 200, "content": {"availableDates": startdate, "status": "SUCCESS", "message": ""}})
                }
            }

推荐阅读