Javascript 更改JSON内部数据格式的更好方法(Regex?!)
我的CRM将以下JSON发送到我的webhook:Javascript 更改JSON内部数据格式的更好方法(Regex?!),javascript,json,regex,date,datetime,Javascript,Json,Regex,Date,Datetime,我的CRM将以下JSON发送到我的webhook: "last_conversion": { "content": { "identifier":"conv-list", "created_at":"2020-05-09T22:06:29.049670Z", "Name":"Test",
"last_conversion":
{
"content":
{
"identifier":"conv-list",
"created_at":"2020-05-09T22:06:29.049670Z",
"Name":"Test",
"BusinessName":"Test Business",
"Phone":"+201 (99) 9999-9999",
"gclid_field":"232938293"
},
"created_at":"2020-05-09T19:06:29.049-05:00"
}
向谷歌广告发送信息需要特定的数据格式:
我想用以下格式创建一个json:
{
"content_created_at":"2020-05-09T22:06:29-05:00",
"Name":"Test",
"created_at": "2020-05-09T19:06:29-05:00"
}
为了实现这一点,我应该在关键点更改两个
1) 2020-05-09T22:06:29.049670Z
到
2020-05-09T22:06:29-05:00(删除.049670Z并添加-05:00)
2) 2020-05-09T19:06:29.049-05:00
到
2020-05-09T19:06:29-05:00(卸下.049)
实现这一目标最优雅的方式是什么?我正在尝试某种正则表达式,但没有按预期工作这里不需要使用正则表达式。 只需将日期字符串转换为JS日期对象:
const date = new Date("2020-05-09T22:06:29.049670Z")
完成此操作后,您可以使用格式化数据
要想在JS中处理日期时获得更愉快的体验,还可以查看。这里不需要使用正则表达式。 只需将日期字符串转换为JS日期对象:
const date = new Date("2020-05-09T22:06:29.049670Z")
完成此操作后,您可以使用格式化数据
为了在JS中处理日期时获得更愉快的体验,您还可以看看。不完全清楚您的数据的完整格式是什么,因此我假设这是更大数组的一部分,例如:
data = [{
"last_conversion": {
"content": {
"identifier": "conv-list",
"created_at": "2020-05-09T22:06:29.049670Z",
"Name": "Test",
"BusinessName": "Test Business",
"Phone": "+201 (99) 9999-9999",
"gclid_field": "232938293"
},
"created_at": "2020-05-09T19:06:29.049-05:00"
}
}];
使用如上所述的数组,您可以使用toJSON()
(或toISOString()
)使用类似的格式,这将为您提供这些日期的ISO格式:
updated = data.map(record => {
return {
Name: data[0].last_conversion.content.Name,
created_at: new Date(data[0].last_conversion.created_at).toJSON(),
content_created_at: new Date(data[0].last_conversion.content.created_at).toJSON()
}
});
这将产生如下数据:
[{
"Name": "Test",
"created_at": "2020-05-10T00:06:29.049Z",
"content_created_at": "2020-05-09T22:06:29.049Z"
}]
如果不接受该格式,您可以使用矩
库或类似的日期格式化程序库。以下是一个可能的数据格式化程序:
// @credit to
// https://stackoverflow.com/a/56709229/886437
// by https://stackoverflow.com/users/392145/nahuel-greco
function dateToLocalISO(date) {
const off = date.getTimezoneOffset()
const absoff = Math.abs(off)
return (new Date(date.getTime() - off*60*1000).toISOString().substr(0,23) +
(off > 0 ? '-' : '+') +
(absoff / 60).toFixed(0).padStart(2,'0') + ':' +
(absoff % 60).toString().padStart(2,'0'))
}
updated = data.map(record => {
return {
Name: data[0].last_conversion.content.Name,
created_at: dateToLocalISO(new Date(data[0].last_conversion.created_at)),
content_created_at: new Date(data[0].last_conversion.content.created_at).toJSON()
}
});
目前还不完全清楚您的数据的完整格式,因此我假设这是更大数组的一部分,例如:
data = [{
"last_conversion": {
"content": {
"identifier": "conv-list",
"created_at": "2020-05-09T22:06:29.049670Z",
"Name": "Test",
"BusinessName": "Test Business",
"Phone": "+201 (99) 9999-9999",
"gclid_field": "232938293"
},
"created_at": "2020-05-09T19:06:29.049-05:00"
}
}];
使用如上所述的数组,您可以使用toJSON()
(或toISOString()
)使用类似的格式,这将为您提供这些日期的ISO格式:
updated = data.map(record => {
return {
Name: data[0].last_conversion.content.Name,
created_at: new Date(data[0].last_conversion.created_at).toJSON(),
content_created_at: new Date(data[0].last_conversion.content.created_at).toJSON()
}
});
这将产生如下数据:
[{
"Name": "Test",
"created_at": "2020-05-10T00:06:29.049Z",
"content_created_at": "2020-05-09T22:06:29.049Z"
}]
如果不接受该格式,您可以使用矩
库或类似的日期格式化程序库。以下是一个可能的数据格式化程序:
// @credit to
// https://stackoverflow.com/a/56709229/886437
// by https://stackoverflow.com/users/392145/nahuel-greco
function dateToLocalISO(date) {
const off = date.getTimezoneOffset()
const absoff = Math.abs(off)
return (new Date(date.getTime() - off*60*1000).toISOString().substr(0,23) +
(off > 0 ? '-' : '+') +
(absoff / 60).toFixed(0).padStart(2,'0') + ':' +
(absoff % 60).toString().padStart(2,'0'))
}
updated = data.map(record => {
return {
Name: data[0].last_conversion.content.Name,
created_at: dateToLocalISO(new Date(data[0].last_conversion.created_at)),
content_created_at: new Date(data[0].last_conversion.content.created_at).toJSON()
}
});
不能使用正则表达式添加偏移量,因为正则表达式不知道它是什么,也不知道如何调整日期和时间值。您可以将字符串转换为日期,并根据需要对其进行格式化。这里已经有很多关于格式化日期的问题。您不能使用正则表达式添加偏移量,因为正则表达式不知道它是什么,也不知道如何调整日期和时间值。您可以将字符串转换为日期,并根据需要对其进行格式化,这里已经有很多关于格式化日期的问题。