Контекст: мне нужно передать объект, содержащий большое количество свойств/полей (для слоя UI из слоя среднего уровня). Среди этого списка свойств один имеет тип Version, который не получает десериализован правильно из формата строки JSON. У меня есть выбранный формат JSON по XML, поскольку сериализация JSON в строку вернет результат короткой строки.
Проблема: System.Version не десериализуется правильно. Я пробовал две разные библиотеки .NET. Ниже приведены фрагменты кода для каждого:
Фрагмент кода 1 с помощью Библиотека ServiceStack.NET:
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}
Фрагмент кода 2 с использованием Newtonsoft.NET library, но с тем же результатом:
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 может работать правильно?