Почему System.Version в строке JSON не десериализуется правильно?C#

Место общения программистов C#
Anonymous
Почему System.Version в строке JSON не десериализуется правильно?

Сообщение Anonymous »

Контекст: мне нужно передать объект, содержащий большое количество свойств/полей (на уровень пользовательского интерфейса со среднего уровня). Среди этого списка свойств есть одно типа Version, которое неправильно десериализуется из строкового формата JSON. У меня есть выбранный формат JSON вместо XML, поскольку сериализация JSON в строку вернет результат короткой строки.

Проблема:
System.Version не десериализуется правильно. Я пробовал две разные библиотеки .NET. Ниже приведены фрагменты кода для каждого из них:

Фрагмент кода 1 с использованием библиотеки ServiceStack .NET:

Код: Выделить всё

        var version = new Version(1, 2, 3, 0);
string reportJSON = JsonSerializer.SerializeToString(version);
//{"Major":1,"Minor":2,"Build":3,"Revision":0,"MajorRevision":0,"MinorRevision":0}

Version report2 = JsonSerializer.DeserializeFromString(reportJSON);
string reportJSON2 = JsonSerializer.SerializeToString(report2);
//{"Major":0,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1}
Фрагмент кода 2 с использованием библиотеки Newtonsoft .NET, но с тем же результатом:

Код: Выделить всё

        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(reportJSON);
string reportJSON2 = JsonConvert.SerializeObject(report2);
//{"Major":0,"Minor":0,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1}
Как это исправить? Или какая другая библиотека JSON.NET может работать правильно?

Подробнее здесь: https://stackoverflow.com/questions/131 ... -correctly

Вернуться в «C#»