使用 System.Text.Json 序列化嵌套日期时间

问题描述 投票:0回答:1

我目前正在从 Newtonsoft.Json 迁移到 System.Text.Json。

我有一个包含字符串

SerializedClass
的类,它本身就是某个 other 类的序列化表示:

public class MyClass
{
  // This is a serialized OtherClass instance
  public string SerializedClass { get; set; }
}

另一个类(序列化的类)有一些字段,其中有一个 DateTime:

public class OtherClass
{
  public DateTime someKey { get; set; }
}

SerializedClass
包含以下格式的日期时间表示形式:
"\"someKey\": \"2023-02-22T12:05:07.2480000Z\"",
,但我需要切换到以下格式:
\""someKey\": \"2023-02-22T12:05:07.248Z\""
(注意末尾省略了 4 个零)。

现有的 Newtonsoft 代码通过调用

JObject.Parse(x.SerializedClass)
来完成此操作。使用
JObject
是因为正在进行一些 json 操作,并且
Parse
方法具有更改日期时间格式所需的副作用。

我不确定如何使用 System.Text 实现此目的。我尝试创建自定义

JsonConverter<DateTime>
,但这不起作用,因为
SerializedClass
是字符串,而不是日期时间。

如何从 json 解析

JsonObject
(或与 Newtonsoft 的
JObject
等价的其他 System.Text),但让它以所需的格式解析嵌套的序列化日期时间?

我想巧妙地使用迭代

JsonObject
中的节点或类似的东西可能会起作用,但我觉得我可能会错过一个更好、更安全的解决方案(设置、自定义转换器等)。

c# json datetime system.text.json
1个回答
0
投票

无法得到答案,因此最终逐个节点进行处理 - 如果该值成功解析为日期时间,则将其转变为具有所需日期时间格式的新字符串。

如果有人有更好的解决方案,我很想听到更好的解决方案,我觉得我可能会错过一些东西。

© www.soinside.com 2019 - 2024. All rights reserved.