Почему 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python3 Venv Version и System Version?
    Anonymous » » в форуме Python
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Python3 Venv Version и System Version?
    Anonymous » » в форуме Python
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • Метод не найден: 'System.String System.String.Format(System.IFormatProvider, System.String, System.Object)
    Anonymous » » в форуме C#
    0 Ответы
    140 Просмотры
    Последнее сообщение Anonymous
  • System.Text.Json.JsonException в System.Text.Json.dll Ошибка десериализации ../Data\clients.json: значение JSON не удало
    Anonymous » » в форуме C#
    0 Ответы
    41 Просмотры
    Последнее сообщение Anonymous
  • Почему wp_get_theme()->get('Version') работает как аргумент wp_enqueue_styles, но не $version = wp_get_theme()->get('Ver
    Anonymous » » в форуме Php
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

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