上下文:我需要传递一个包含大量属性/字段的对象(从中间层到 UI 层)。在这个属性列表中,一个是没有从 JSON 字符串格式正确反序列化的 Version 类型。我在 XML 上选择了 JSON 格式,因为 JSON 序列化为字符串将返回短字符串结果。
问题:System.Version 没有正确反序列化。我尝试了两个不同的 .NET 库。以下是每个的代码片段:
使用ServiceStack .NET 库的代码片段 1 :
var version = new Version(1, 2, 3, 0);
string reportJSON = JsonSerializer.SerializeToString<Version>(version);
//{"Major":1,"Minor":2,"Build":3,"Revision":0,"MajorRevision":0,"MinorRevision":0}
Version report2 = JsonSerializer.DeserializeFromString<Version>(reportJSON);
string reportJSON2 = JsonSerializer.SerializeToString<Version>(report2);
//{"Major":0,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1}
使用Newtonsoft .NET 库的代码片段 2,但结果相同:
var version = new Version(1, 2, 3, 0);
string reportJSON = JsonConvert.SerializeObject(version);
//{"Major":1,"Minor":2,"Build":3,"Revision":0,"MajorRevision":0,"MinorRevision":0}
Version report2 = JsonConvert.DeserializeObject<Version>(reportJSON);
string reportJSON2 = JsonConvert.SerializeObject(report2);
//{"Major":0,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1}
如何解决这个问题?或者还有哪些其他 JSON.NET 库可以正常工作?