【发布时间】:2020-03-18 14:36:07
【问题描述】:
我正在尝试反序列化以下 JSON:
{
"Anriss": "SomeAnriss",
"ArtikelId": 123123,
"Image": null,
"KanalId": 101,
"MediumName": "SomeMediumName",
"PublikationsDatum": "/Date(1573581177000)/",
"Titel": "SomeTitel",
"Link": null
}
通过这个方法调用:
await this.jsonHelper.DeserializeJsonContent<AvenueArtikelDetail>(httpResponseMessage.Content);
方法:
public async Task<T> DeserializeJsonContent<T>(HttpContent responseContent)
{
var content = await responseContent.ReadAsStringAsync();
var deserializedJsonContent = JsonSerializer.Deserialize<T>(content, new JsonSerializerOptions {PropertyNameCaseInsensitive = true, IgnoreNullValues = true});
return deserializedJsonContent;
}
很遗憾,我收到以下错误:
System.Text.Json.JsonException: '无法将 JSON 值转换为 System.DateTime。路径:$.PublikationsDatum |行号:0 | BytePositionInLine:353。'
JSON 来自对此 API 方法的调用:
[HttpGet]
[AllowAnonymous]
public async Task<JsonResult> GetArtikelDetail(ArtikelDetailSearchDto searchDto)
{
var artikelDetail = this.artikelDetailService.GetArtikelDetailBy(searchDto);
return this.Json(artikelDetail, JsonRequestBehavior.AllowGet);
}
publikationsDatum 是一个普通的DateTime 属性
public DateTime PublikationsDatum { get; set; }
我做错了什么?如何将 JSON 的 publikationsDatum 反序列化回 DateTime?
提前致谢
编辑:我们没有使用任何 JSON 库,并希望保持这种方式。我们正在使用System.Text.Json
【问题讨论】:
-
它应该可以工作 Json.net 已经处理了这个。这是一个现场演示,除了复制过去没有什么特别的。 dotnetfiddle.net/PWXyix
-
我们没有使用任何 JSON 库。我们使用内置的
System.Text.Json。我可以让它和这个一起工作吗? -
奥奇。在字符串中反序列化并具有解析字符串的其他属性。丑陋的,但这是最简单的方法。
-
无论如何,您应该能够指定日期格式:(如果他们使用 Json.NET:Specifying a custom DateTime format when serializing with Json.Net。如果不是:ASP MVC 4 JsonResult how to use ISO 8601 dates?
标签: c# .net json asp.net-core-3.0 system.text.json