序列化 – Json.NET可以使用点符号反序列化一个扁平化的JSON字符
我有一个扁平的
JSON:
{ "CaseName" : "John Doe v. State","CaseDate" : "<some date>","Client.FirstName" : "John","Client.LastName" : "Doe","Client.Email" : "johndoe@gmail.com" etc... } 我想反序列回这个实体: public class Case() { public string CaseName { get; set; } public string CaseDate { get; set; } public Client Client { get; set; } } Client.FirstName,Client.LastName和Client.Email是Client对象中的属性.使用Json.NET,有没有办法得到它解析点符号和反序列化这个实体正确?目前,使用默认设置,它告诉我Client.FirstName不是Case类型的一个属性.
是的你可以.您将从
JsonConverter 导出一个类,并将
CanConvert 方法替换为可以转换客户端类型的标记.
然后,您将覆盖 对于像这样的JSON文字,您可能需要为Case类型创建一个JsonConverter,因为您需要在序列化期间缓存Client对象的所有属性,直到有足够的信息来实际创建Client实例. 然后,您可以在 请注意,如果您需要为可能以这种方式表示的许多不同的类执行此操作,那么可以编写一个JsonConverter实现,并将其扫描属性上的属性.如果该属性具有属性并且使用属性公开另一个对象,那么它将期望读/写点符号. 应该注意的是,当您使用点符号作为标识符时,很常见.如果可能的话,在构建JSON文字的一边,它应该这样做: { CaseName: "John Doe v. State",CaseDate: "<some date>",Client: { FirstName: "John",LastName: "Doe",Email: "johndoe@gmail.com" } } 但这是假设你有这个目的的控制权.如果没有,那么你可以做的不多. 如果你有控制权,那么以这种方式构建你的JSON文字就不会需要一个自定义的JsonConverter实现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |