替换发生在逃逸之前 http://www.ecma-international.org/ecma-262/5.1/#sec-15.12.3,留给你:
"/Date(1599890827000)/"
Or:
"\\/Date(1599890827000)\\/"
实际上,您必须对结果输出运行字符串替换:
JSON.stringify(data).replace(/\//g, '\\/');
这意味着您将无法使用内置的 Expressres.json(data) https://github.com/expressjs/express/blob/b5a280111f94728e70aa1a22687e64aaf31abd81/lib/response.js#L222并且可能需要编写一个函数来替换它,例如:
function dotNetJSONResponse(res, data) {
var app = res.app;
var replacer = app.get('json replacer');
var spaces = app.get('json spaces');
var body = JSON.stringify(data, replacer, spaces);
if (!this.get('Content-Type')) {
res.set('Content-Type', 'application/json');
}
return res.send(body.replace(/\//g, '\\/'));
}
称其为:
app.get('/url', function (req, res) {
dotNetJSONResponse(res, data);
});
However,也就是说,修复 .NET 中的行为将是更向前兼容的解决方案。