ObjectMapper неправильно обрабатывает двойные кавычки - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь реализовать запрос 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"

Я, вероятно, упускаю что-то очень простое здесь, но я пытался немного, не делая никакого прогресса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...