【发布时间】:2019-11-26 18:59:56
【问题描述】:
我正在使用 Facebook Graph API,它返回一个 json 对象,该对象包含以下格式的字符串中的日期时间:“created_time”:“2013-01-25T00:11:02+0000”
反序列化的对象包含这个日期时间:“0001-01-01 00:00:00”,我想它相当于 null。如何正确反序列化日期时间字符串?
这是我的 DTO 课程:
using System;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Text.Json.Serialization;
using Newtonsoft.Json.Converters;
using project.DTOs;
namespace project.DTOs.Facebook
{
public class FacebookCommentResponseDto
{
[JsonPropertyName("id")]
public string Id { get; set; }
[JsonPropertyName("from")]
public FacebookUserDto From { get; set; }
[JsonPropertyName("message")]
public string Message { get; set; }
[JsonPropertyName("created_time")]
[JsonConverter(typeof(CustomDateTimeConverter))]
public DateTime CreatedTime { get; set;}
}
internal class CustomDateTimeConverter : IsoDateTimeConverter
{
public CustomDateTimeConverter()
{
base.DateTimeFormat = "yyyy-MM-ddTH:mm:ss.fffK";
}
}
}
这是我反序列化对象的代码:
var result = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(result);
【问题讨论】:
-
即
ISO 8601格式。如果您想要unix时间戳(进行转换),您可以在通话中添加date_format=U。 See 那里有更多关于转换 ISO 8601 格式的信息。 -
可能你的格式有点不对劲? yyyy-MM-ddTH:mm:ss.fffK --> yyyy-MM-ddTHH:mm:ss.ffK(添加了一个 H 并删除了一个 f 因为您期望的格式似乎有两位数的小时和两位数的毫秒以及)
-
通过添加 H 并删除 f 来更改格式不起作用。我究竟如何添加
date_format=U? -
@Mattieeec3 可能没有帮助,但重新阅读,它应该是 yyyy-MM-ddTHH:mm:ssK 因为没有提供毫秒。
-
我现在也试过了,可惜没用。
标签: c# asp.net .net asp.net-mvc asp.net-core