WedX - журнал о программировании и компьютерных науках

Сериализация свойства DateTime IsoDateTimeConverter и ошибка ServerProtocolViolation

У меня есть эти классы:

    public class EncuestaRespuesta
    {
        public string idCaso { get; set; }
        public string tipoEncuesta { get; set; }
        public string codMovimiento { get; set; }
        public string motivoRetirada { get; set; }
        public string duracion { get; set; }
        public DateTime fechaHora { get; set; }
        public string gestor { get; set; }
        public List<RespuestasEncuesta> listRespuestasEncuestas { get; set;}
    }

    public class RespuestasEncuesta
    {
        public string pregunta { get; set; }
        public string respuesta { get; set; }
        public string numOrdenTrabajo { get; set; }
    }

Используя JSON.NET,

    // https://www.newtonsoft.com/json/help/html/NullValueHandlingIgnore.htm
    var settings = new JsonSerializerSettings
    {
        NullValueHandling = NullValueHandling.Ignore
    };

    settings.Converters.Add(new Newtonsoft.Json.Converters.IsoDateTimeConverter()); 

    var json = JsonConvert.SerializeObject(request, Formatting.Indented, settings);

Когда я вызываю REST API (HttpClient PostAsync), я получаю сообщение об ошибке:

«Сервер совершил нарушение протокола. Раздел = ResponseStatusLine» Ошибка: ServerProtocolViolation

Я не знаю, почему. Моя строка JSON:

 {
  "idCaso": "5009E000007Hp94QAD",
  "codMovimiento": "1",
  "motivoRetirada": "2",
  "duracion": "0",
  "fechaHora": "2018-03-20T12:56:36.4841861Z",
  "gestor": "GESTOR SALESFORCE",
  "tipoEncuesta": "T3_1018_RM",
  "listRespuestasEncuestas": [
    {
      "numOrdenTrabajo": "",
      "pregunta": "",
      "respuesta": ""
    }
  ]
}

Я хотел бы, чтобы эта строка JSON была в порядке в моих тестах:

{
  "idCaso": "5009E000007Hp94QAC",
  "codMovimiento": "1",
  "motivoRetirada": "1",
  "duracion": "",
  "fechaHora": "2018-02-06T14:40:43.511Z",
  "gestor": "",
  "tipoEncuesta": "T3_1018_RM",
  "listRespuestasEncuestas": [
    {
      "numOrdenTrabajo": "",
      "pregunta": "",
      "respuesta": ""
    }
  ]
}

Проблема. Поле dateTime:

"fechaHora": "2018-03-20T12:56:36.4841861Z",

неправильно

"fechaHora": "2018-02-06T14:40:43.511Z"

ОК

Какие-либо предложения?


Ответы:


1

Я использую IsoDateTimeConverter с DateTimeFormat:

// https://www.newtonsoft.com/json/help/html/NullValueHandlingIgnore.htm
var settings = new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore
};

settings.Converters.Add(new Newtonsoft.Json.Converters.IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-ddTHH:mm:ss.FFFZ" });

var json = JsonConvert.SerializeObject(request, Formatting.Indented, settings);

Даты JSON

https://www.newtonsoft.com/json/help/html/DatesInJSON.htm

как заставить сериализатор netwtonsoft json сериализоваться свойство datetime в строку?

Сериализация нескольких свойств DateTime в одном классе с использованием разных форматы для каждого

Newtonsoft.json IsoDateTimeConverter и DateFormatHandling

Формат даты и времени UTC

Как я могу отформатировать DateTime в веб-формат UTC?

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

20.03.2018
Новые материалы

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

ИИ в аэрокосмической отрасли
Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


Для любых предложений по сайту: [email protected]