我目前正在从 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
中的节点或类似的东西可能会起作用,但我觉得我可能会错过一个更好、更安全的解决方案(设置、自定义转换器等)。
无法得到答案,因此最终逐个节点进行处理 - 如果该值成功解析为日期时间,则将其转变为具有所需日期时间格式的新字符串。
如果有人有更好的解决方案,我很想听到更好的解决方案,我觉得我可能会错过一些东西。