Как использовать поля класса с System.Text.Json.JsonSerializer? - PullRequest
3 голосов
/ 27 сентября 2019

Недавно я обновил решение до версии .NET Core 3, и у меня есть класс, который требует, чтобы переменные класса были полями.Это проблема, поскольку новый System.Text.Json.JsonSerializer не поддерживает сериализацию и десериализацию полей, а обрабатывает только свойства.

Есть ли способ убедиться, что два финальных класса в приведенном ниже примере имеют одинаковые точные значения?

using System.Text.Json;

public class Car
{
    public int Year { get; set; } // does serialize correctly
    public string Model; // doesn't serialize correctly
}

static void Problem() {
    Car car = new Car()
    {
        Model = "Fit",
        Year = 2008,
    };
    string json = JsonSerializer.Serialize(car); // {"Year":2008}
    Car carDeserialized = JsonSerializer.Deserialize<Car>(json);

    Console.WriteLine(carDeserialized.Model); // null!
}

1 Ответ

3 голосов
/ 27 сентября 2019

В настоящее время поля не сериализуются.Но идет работа по разработке.Вы можете следовать этой теме.https://github.com/dotnet/corefx/pull/39254

...