我正在开发一个API,使用ASP公开一些数据。NET Web API。
在其中一个API中,客户端希望我们以yyyy-MM-dd
格式公开日期。我不想为此更改全局设置(例如,GlobalConfiguration.Configuration.Formatters.JsonFormatter
),因为它非常特定于此客户端。我在为多个客户开发的解决方案中做到了这一点。
我能想到的一个解决方案是创建一个自定义的JsonConverter
,然后将其放入我需要进行自定义格式化的属性中
例如。
class ReturnObjectA
{
[JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime ReturnDate { get;set;}
}
只是想知道是否还有其他简单的方法。
也可以使用< code > iso datetime converter 实例来完成,而无需更改全局格式设置:
string json = JsonConvert.SerializeObject(yourObject,
new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
这使用 JsonConvert.SerializeObject
重载,该重载采用参数 JsonConverter[]
参数。
您可以使用此方法:
public class DateFormatConverter : IsoDateTimeConverter
{
public DateFormatConverter(string format)
{
DateTimeFormat = format;
}
}
并且这样使用它:
class ReturnObjectA
{
[JsonConverter(typeof(DateFormatConverter), "yyyy-MM-dd")]
public DateTime ReturnDate { get;set;}
}
DateTimeFormat
字符串使用. NET格式字符串语法如下所述:https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings
你在正确的轨道上。既然您说不能修改全局设置,那么下一个最好的办法就是根据需要应用< code>JsonConverter属性,就像您建议的那样。原来Json.Net已经有了一个内置的< code > IsoDateTimeConverter ,可以让你指定日期格式。不幸的是,您不能通过< code>JsonConverter属性设置格式,因为该属性的唯一参数是类型。然而,有一个简单的解决方案:子类化< code > IsoDateTimeConverter ,然后在子类的构造函数中指定日期格式。在需要的地方应用< code>JsonConverter属性,指定您的自定义转换器,然后就可以开始了。以下是所需的全部代码:
class CustomDateTimeConverter : IsoDateTimeConverter
{
public CustomDateTimeConverter()
{
base.DateTimeFormat = "yyyy-MM-dd";
}
}
如果您不介意时间也在其中,您甚至不需要对IsoDateTimeConverter进行子类化。它的默认日期格式是yyyy'-'MM'-'dd'T'HH':'MM':'ss。ffffffk
(如源代码所示)。
问题内容: 我有一堂课 我想将下面的JSON数据反序列化到上面的类/对象中 我的想法是在JSON中是一个对象,但我只想获取(在JSON中)在反序列化期间将像在类中那样传递。 如何使用Json.NET实现该目标? 我相信我可以使用CustomJsonConverter完成它。但是我很困惑。docs中的示例仅用于,但不适用。 问题答案: 我只是使用上面在问题中提到的方法解决了我的问题。在我完整的代码下
ObjectMapper不会将对象格式化为自定义对象。 波乔不在我的控制之下,所以我不能改变它。我需要序列化WS的POJO对象。POJO有(我不知道为什么,因为它的日期来自数据库)。 我使用的是Spring boot 2.1.8。释放,所以。。。我将其放入我的依赖项中: 我还在应用程序中添加了这个。特性: 在配置文件中,我在配置文件中添加了这个bean,因为尽快配置ObjectMapper以接受更
我正在尝试用自定义日期格式序列化和反序列化相当简单的对象: 在执行main方法时,我希望得到类似于: “日期”:“20151117” 20151117 但不幸的是得到了以下几点: {“日期”:“20151117”} 20151117-01-01T00:00:00.000+03:00(年份不正确) 似乎Jackson忽略了对象反序列化的@JSONFORMAT注释,并将字符串视为ISO-8601符号中
有人帮忙吗?谢谢
问题内容: 默认输出格式为: 我无法弄清楚如何仅输出具有特定格式的日期部分: 或csv文件中两列中的日期和时间: 该文档太简短,无法给我任何有关如何执行这些操作的线索。有人可以帮忙吗? 问题答案: 您可以将它们保存为单独的列: 然后具体说明要导出到csv的列:
问题内容: 我在csv文件中保存了数据,日期以标准的英国格式存储为字符串--表示它们看起来像: 上面的示例代表2012年1月12日和2012年1月30日。 当我使用pandas版本0.11.0导入此数据时,我进行了以下转换: 但它转换日期不一致。使用我现有的示例,2012年12月1日会将其转换为表示2012年12月1日的datetime对象,而30/01/2012将转换为2012年1月30日,这就