Я пытаюсь реализовать запрос HTTP Patch в Postgres JSONB. Вводом запроса является запрос на исправление в json, я сопоставляю этот объект с автоматически сгенерированным POJO на основе открытой спецификации API с использованием swagger codegen.
Все идет нормально, но проблема заключается в анализе значения обратно.
База данных является объектом json, и если мы исправляем, мы запускаем обновление значения json, поэтому значение запроса исправления необходимо преобразовать обратно в json.
Теперь я не знаю, каково значение, может быть дата, может быть строка, может быть весь объект.
Когда я отображаю весь объект в json, он работает нормально, но если значение оказывается равным 1 (в моем случае это строка, содержащая поле даты), он добавляет двойные двойные кавычки ("" dateString ""). Я не могу заставить его этого не делать, и он создает недопустимый json, если я вставлю это в объект jsonb в postgres.
Я уже пытался настроить маппер так, чтобы он пропускал кавычки и учитывал поля без кавычек, как описано в Как разрешить Джексону генерировать строку json, используя одинарные кавычки или без кавычек?
Это ничего не сделало.
Я также пытался использовать другую библиотеку, специфичную для синтаксического анализа jsonB, но это делало то же самое.
[{
"op": "replace",
"path": "/dueDate",
"value": "2019-06-14T12:02Z"
}, {
"op": "replace",
"path": "/state",
"value": {
"state_initiator": "string",
"status": "PROCESSING"
}
}]
В приведенном ниже коде «документ» содержит 1 патч из вышеуказанных патчей
ObjectMapper mapper = new ObjectMapper();
String valueAsJson = mapper.writeValueAsString(document.getValue());
Патч / state работает нормально и анализируется правильно, а / dueDate - нет, и в итоге получается "" 2019-06-14T12: 02Z "" <- двойные двойные кавычки </p>
Не уверен, почему он добавляет двойные кавычки, когда он уже является строковым значением, что приводит к неправильному json.
Я ожидаю, что объекты останутся такими, как есть, но если это одно строковое значение, которое будет заключено в одинарные двойные кавычки вокруг объекта -> "2019-06-14T12: 02Z"
Я, вероятно, упускаю что-то очень простое здесь, но я пытался немного, не делая никакого прогресса.