System.Text. Json Ошибка десериализации - PullRequest
0 голосов
/ 28 мая 2020

С этим DTO:

public class QuestionDTO {
    public Guid Id { get; set; }
    public string Prompt { get; set; }
    public List<Answer> Choices { get; set; }

    public QuestionDTO() {

    }

    public QuestionDTO(Question question) {
        this.Id = question.Id;
        this.Prompt = question.Prompt;
        this.Choices = question.Choices;
    }
}

Я получал сообщение об ошибке «Невозможно выполнить синтаксический анализ без конструктора без параметров». С тех пор я исправил это, но теперь мои объекты десериализованы пустыми:

using System.Text.Json;
var results = JsonSerializer.Deserialize<List<QuestionDTO>>(jsonString);

jsonString содержит 3 элемента с правильными данными, а десериализованный список содержит 3 элемента, но все свойства пусты.

enter image description here

1 Ответ

1 голос
/ 28 мая 2020

Новая библиотека json по умолчанию чувствительна к регистру. Вы можете изменить это, указав параметр настроек. Вот пример:

private JsonSerializerOptions _options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true }

private async Task SampleRequest()
{
    var result = await HttpClient.GetStreamAsync(QueryHelpers.AddQueryString(queryString, queryParams));
    _expenses = await JsonSerializer.DeserializeAsync<List<Common.Dtos.Expenses.Models.Querys.ExpensesItem>>(result, _options);
}
...