c# - 当日期时间通过 json 传递时,API 对象为空
问题描述
我目前正在尝试创建一个 POST 请求来创建订单。如果我像这样放置我的json,这很好用:
"Id": "A2EC1753-88DC-45E1-AD26-F887E0013323",
"OrderType": "10",
"Customer": "8111345C-95E3-460F-90FB-26E62E4265C4",
"CustomerCode": "155542",
"SubTotal": 417,
"VatTotal": 0,
"Total": 417,
"Created": "2015-03-03T14:01:19.773+01:00",
"Date": "2015-03-03T14:01:19.773+01:00",
.....
但是当我给出我的客户发送的日期时 (yyyy-mm-dd hh:mm:ss) 即:
"Id": "A2EC1753-88DC-45E1-AD26-F887E0013323",
"OrderType": "10",
"Customer": "8111345C-95E3-460F-90FB-26E62E4265C4",
"CustomerCode": "155542",
"SubTotal": 417,
"VatTotal": 0,
"Total": 417,
"Created": "2019-04-26 16:53:39",
"Date": "2019-04-26 16:53:39",
.....
我的控制器中的对象返回 null。
Created 和 Date 都是 DateTime 类型。
我在这里想念什么?
编辑:
因此,客户端将 DateTime 发送为 yyyy-MM-dd HH:mm:ss。这显然不是 .Net 的默认 json 结构。
该规范包含对象、数组、字符串、整数和浮点数,但它没有为日期的外观定义标准。Json.NET 使用的默认格式是 ISO 8601 标准:“2012-03-19T07:22Z”。在 Json.NET 4.5 之前,日期是使用 Microsoft 格式编写的:“/Date(1198908717056)/”.15 feb。2009
我试图相应地改变它https://stackoverflow.com/a/49978720/7639883和下面的答案。
public void ConfigureServices(IServiceCollection services)
{
services.AddOData();
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; // month must be capital. otherwise it gives minutes.
});
Setting.ConnectionString = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<IsahContext>(
options => options.UseSqlServer(Setting.ConnectionString)
);
}
但由于某种原因,它仍然无法正常工作。
解决方案
对于使用 NewtonSoft.Json(即 pre-3.0)的核心版本,这篇文章可能很有用:https ://vikutech.blogspot.com/2017/01/handling-json-datetime-format-on-asp.net-core .html
如文章所述,要引导Newtonsoft.Json.Converters.IsoDateTimeConverter
类处理的Json转换使用自定义日期格式,应在Configure方法中添加以下代码:
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.DateTimeZoneHandling = "MM/dd/yyyy HH:mm:ss";
});
推荐阅读
- typescript - 在打字稿打字中“映射”一个数组
- css - 是否可以将变量传递给Django中的CSS文件
- powershell - 使用“2”参数调用“子字符串”的异常:“索引和长度必须引用字符串中的位置。参数名称:长度”
- r - 类 drc 错误的对象没有一目了然的方法
- powerbi - 在 Power BI 中如何处理主值列上缺少的行值?
- android - 为什么 @Insert 注释的 onConflict 属性只在一种方法中使用?
- python - 将 C 源文件与 Python 包一起打包
- python - 抓取 Google 搜索结果时清空列表
- java - 如何通过将实体重新映射到另一个 JsonClass 来有效地忽略 JSON 属性?
- javascript - 错误:导航器只能包含“屏幕”组件作为其直接子级