我有一个控制器操作,它实际上只是返回模型的JsonResult.因此,在我的方法中,我有如下内容:

return new JsonResult(myModel);

这很好用,除了一个问题.模型中有一个Date属性,该属性似乎在Json结果中返回,如下所示:

"\/Date(1239018869048)\/"

我应该如何处理日期,以便它们以我需要的格式返回?或者我如何在脚本中处理上面的格式?

推荐答案

仅仅是扩展到casperOne's answer.

JSON spec不包括日期值.MS必须进行调用,他们 Select 的路径是利用字符串的javascript表示中的一个小技巧:字符串文本"/"与"\/"相同,字符串文本将被序列化为"\/"(甚至"\/"必须映射为"\\/").

有关更好的解释,请参见http://msdn.microsoft.com/en-us/library/bb299886.aspx#intro_to_json_topic2(向下滚动到"从JavaScript文字到JSON")

JSON的一个痛点是 缺少日期/时间文字.许多 人们感到惊讶和失望 当他们第一次学到这一点的时候 遇到JSON.简单的解释 (安慰或不安慰)缺席 日期/时间文字是JavaScript 也从来没有过:支持 JavaScript中的日期和时间值为 完全通过日期提供 对象.大多数使用JSON的应用程序 因此,作为一种数据格式,通常 倾向于使用字符串或 表示日期和时间的数字 价值.如果使用字符串,则可以 通常期望它在ISO中 8601格式.如果使用数字, 取而代之的是,该值通常为 被认为是指……的数量 以通用坐标为单位的毫秒 纪元以来的时间(UTC),其中纪元是 定义为1970年1月1日午夜 (UTC).再说一次,这只是一个 约定,而不是JSON的一部分 标准的.如果您要交换数据 使用另一个应用程序,您将 需要查看其文档以查看 它如何编码日期和时间值 在JSON文字中.例如, 微软的ASP.NET AJAX既不使用也不使用 所描述的惯例的一部分.相反, 它将.NET日期时间值编码为 JSON字符串,其中 字符串为/日期(刻度)/以及其中 TICKS表示从 纪元(UTC).所以1989年11月29日, 上午4:55:30,UTC编码为 "\/日期(628318530718)\/".

一个解决方案就是把它解析出来:

value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));

不过,我听说有一个设置可以让序列化程序输出DateTimenew Date(xxx)语法的对象.我会试着把它挖出来.


第二个参数JSON.parse()接受一个reviver函数,其中规定了在返回之前,最初产生的值是如何产生的.

以下是日期的示例:

var parsed = JSON.parse(data, function(key, value) {
  if (typeof value === 'string') {
    var d = /\/Date\((\d*)\)\//.exec(value);
    return (d) ? new Date(+d[1]) : value;
  }
  return value;
});

JSON.parse()人的文件

Javascript相关问答推荐

将状态向下传递给映射的子元素

如何在Connect 4游戏中 for each 玩家使用位板寻找7形状?

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

将现场录音发送到后端

如何在Vue 3中创建自定义 Select 组件,并将选项作为HTML而不是props 传递?

OpenAI转录API错误请求

自定义图表工具提示以仅显示Y值

FireBase云函数-函数外部的ENV变量

无法重定向到Next.js中的动态URL

更改agGRID/Reaction中的单元格格式

使用createBrowserRoutVS BrowserRouter的Reaction路由

TypeORM QueryBuilder限制联接到一条记录

Django模板中未加载JavaScript函数

Plotly.js栏为x轴栏添加辅助文本

我如何才能获得价值观察家&对象&S的价值?

是否有静态版本的`instanceof`?

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?

带有JS模块模式的Rails的Importmap错误:";Net::ERR_ABORTED 404(未找到)&Quot;

使用导航时,路径的所有子组件都必须是路径

我不能将每个产品单独添加或删除到Collection 列表中