javascript - 如何在 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)
}
}
解决方案
你可以像这样创建一个对象:
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": ""}})
}
}
推荐阅读
- jquery - jquery:如果当前时间落在从 json 获得的两次之间
- sql - Azure 函数到 Azure SQL - 性能和扩展
- ruby - 无法使用 rbenv 在 Ubuntu 14.04 上将 ruby 安装到 /usr/local
- c - 将指针转换为 intptr_t 并返回
- python - 如何在 Python unittest.TestCase 中添加匹配器
- java - 应该在哪里检查类型,在 ANTLR 语法中还是在访问者中?
- c# - 如何减少软件产品密钥的 ECDSA 签名?C#
- amazon-redshift - 什么是红移中的 id 和日期自加入的最佳排序键和分区键
- angular - Angular和Firebase:只要他/她没有明确注销,如何让用户保持登录状态?
- gremlin - 使用 tinkerpop Java api 执行缓慢的查询