简体   繁体   English

如何在 JavaScript 中将数组 api 响应转换为 json

[英]how to convert array api response to json in JavaScript

I have an api which return data structured like this :我有一个 api,它返回这样结构的数据:

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

results data:结果数据:

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

i want that this api to return result like this:我希望这个 api 返回这样的结果:

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

this is my full code where i get the data as array这是我将数据作为数组获取的完整代码

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)
                }
            }

you can just create an object like this:你可以像这样创建一个对象:

 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": "" } })

Update :更新

Based on the comments on this answer, modify your response so it looks like this:根据对此答案的评论,修改您的回复,使其看起来像这样:

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": ""}})
                }
            }

You can create an empty object and set properties to it and send it as response from ur node api service.您可以创建一个空对象并为其设置属性,然后将其作为来自您的节点 api 服务的响应发送。

let data = [
    "2017-11-24",
    "2017-11-27"
];

let response = [];
response.data = data;
response.code = 200;
response.status = 'success';
response.message = 'Mission Successful';

return response;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM