Ошибка разбора массива json, приложение завершено без чтения всего тела запроса - PullRequest
0 голосов
/ 29 ноября 2018

Я застрял на этом вопросе более 4 часов.Мой json выглядит нормально, по крайней мере, для jsonLint, вот пример:

[{
    "cnpj": "1",
    "notasPorConsulta": "1",
    "partirDe": "1"
}, {
    "cnpj": "2",
    "notasPorConsulta": "2",
    "partirDe": "2"
}]

или

{
    "NovoRastreio": [{
        "cnpj": "1",
        "notasPorConsulta": "1",
        "partirDe": "1"
    }, {
        "cnpj": "2",
        "notasPorConsulta": "2",
        "partirDe": "2"
    }]
}

Вот как я пишу с помощью JavaScript.

(async () => {
        console.log(NovoRastreio);
        const fetchResp = await fetch('api/values/NovoRastreio', {
            method: 'POST',
            headers: {
                'Accept': 'application/json',
                'Content-Type': 'application/json'
            },
            body: NovoRastreio
        })
        .then();
            .then(res => console.log(res.json()));
    })();

Я тоже пробовал без асинхронности / ожидания.Безуспешно.

Сначала я создал базовую модель, после того как я сгенерировал другую с использованием QuickType, вот она.

public partial class NovoRastreio
    {
        [JsonProperty("NovoRastreio")]
        public List<NovoRastreioElement> Rastreios { get; set; }
    }

    public partial class NovoRastreioElement
    {
        [JsonProperty("cnpj")]
        public string Cnpj { get; set; }

        [JsonProperty("notasPorConsulta")]
        [JsonConverter(typeof(ParseStringConverter))]
        public long NotasPorConsulta { get; set; }

        [JsonProperty("partirDe")]
        [JsonConverter(typeof(ParseStringConverter))]
        public long PartirDe { get; set; }
    }

И мой контроллер, я удалил весь код и оставил толькопростой консольный писатель, чтобы посмотреть, сработает ли он.

[HttpGet("NovoRastreio")]
        public void NovoRastreioPorCnpj([FromBody]NovoRastreio rastreios )
        {
            System.Console.WriteLine(rastreios);
        }

Нет, я получаю ошибку от заголовка каждый раз, даже если я пытаюсь использовать почтальон, а также у меня есть несколько других постов в этомтот же API, и он отлично работает, но отличается тем, что другие просто публикуют один объект JSON вместо списка / массива из нескольких объектов.

1 Ответ

0 голосов
/ 29 ноября 2018

Хорошо, вы указали [JsonProperty("NovoRastreio")] в своем class NovoRastreio, но в вашем json нет поля с таким именем.Попробуйте отправить что-то вроде этого:

{
  "NovoRastreio":
    [{
        "cnpj": "1",
        "notasPorConsulta": "1",
        "partirDe": "1"
    }, {
        "cnpj": "2",
        "notasPorConsulta": "2",
        "partirDe": "2"
    }]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...