是的你可以。你将从中派生出一个类JsonConverter并覆盖CanConvert方法表明您可以转换Client
type.
然后,您将覆盖ReadJson and WriteJson读取和写入 JSON 文本字段的方法。
对于像这样的 JSON 文字,您很可能需要创建一个JsonConverter
为了Case
类型,因为您需要缓存该对象的所有属性Client
序列化期间的对象,直到您有足够的信息来实际创建对象Client
实例。
然后,您可以调用Add
方法上的JsonConverterCollection暴露的实例Converters财产 on the JsonSerializer您用来执行序列化/反序列化的实例。
请注意,如果您需要对可能以这种方式表示的许多不同类执行此操作,那么您可以编写one JsonConverter
实现,并让它扫描属性上的属性。如果属性具有属性并公开另一个具有属性的对象,则它将期望读取/写入点符号。
应该注意的是,虽然您使用点符号作为标识符,但这样做的情况很少见。如果可能的话,在构建 JSON 文字的一侧,应该以这种方式进行:
{
CaseName: "John Doe v. State",
CaseDate: "<some date>",
Client:
{
FirstName: "John",
LastName: "Doe",
Email: "[email protected]"
}
}
但这是假设您可以控制这一目标。如果你不这样做,那么你无能为力。
如果您确实有控制权,那么以这种方式构建 JSON 文字将不需要自定义JsonConverter
执行。