JsonSerializer.Serialize возвращает пустой объект - PullRequest
1 голос
/ 18 апреля 2020

Я пытаюсь сохранить объект класса, который я создал, в файл, но JsonSerializer.Serialize возвращает {}.

class User : DalObject<User>
{
    private readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    private string email;
    private string nickname;
    private string password;
    private bool LoggedIn;

    public User(string email, string password, string nickname, bool LoggedIn)
    {
        this.email = email;
        this.password = password;
        this.nickname = nickname;
        this.LoggedIn = LoggedIn;
    }

    public string ToJson()
    {
        var options = new JsonSerializerOptions
        {
            WriteIndented = true
        };
        log.Debug("User " + this.email + " saved");
        return JsonSerializer.Serialize(this, options);
    }

1 Ответ

5 голосов
/ 18 апреля 2020

JsonSerializer.Serialize только сериализует опубликованные c свойства. У вас есть только (личные) поля.

Поведение сериализации

  • По умолчанию все свойства publi c сериализуются. Вы можете указать свойства для исключения.

  • ...

  • В настоящее время поля исключены.

От Документы Microsoft

См. Также запрос функции

Обход

Вы можете использовать Json. NET и добавьте [JsonProperty] к приватным полям.

Метод в Json. NET равен JsonConvert.SerializeObject

...