Bra*_*unt 2 c# json.net asp.net-web-api2
我正在使用 NewtonSoft.JSON 将我的对象序列化为 JSON。我有一个要求,日期时间格式必须为 2017-05-06T11:59:37:012-0500。我已经传递了我自己的日期时间格式,以使其传递为 2017-05-06T11:59:37:012-05:00。但是我不确定如何删除时区中的冒号。
这是转换它的方法,但我需要一些可以直接使用字符串的东西。
var postDataSerialized = JsonConvert.SerializeObject(postData, new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-ddTHH:mm:ss:fffzzzz" });
Run Code Online (Sandbox Code Playgroud)
不幸的是,仅仅通过调整一些参数值是无法避免这个冒号的。IsoDateTimeConverter 使用.NetDateTime自定义格式功能,并且冒号针对自定义格式进行了硬编码zzz。
因此,您必须自己实现所需的格式,这可以通过提供自定义JsonConverter. 自定义转换器可能如下所示:
public class NoColonIsoDateTimeConverter : IsoDateTimeConverter
{
public NoColonIsoDateTimeConverter()
{
DateTimeFormat = "yyyy'-'MM'-'ddTHH':'mm':'ss':'fffzzz";
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (value is DateTime)
{
var dateTime = (DateTime)value;
var text = dateTime.ToString(DateTimeFormat);
text = text.Remove(text.Length - 3, 1);
writer.WriteValue(text);
}
else
{
throw new JsonSerializationException("Unexpected value when converting date. Expected DateTime");
}
}
}
Run Code Online (Sandbox Code Playgroud)
演示: https: //dotnetfiddle.net/79AuZs
| 归档时间: |
|
| 查看次数: |
2297 次 |
| 最近记录: |