Джексон: Получить не декодированное строковое значение JSON из JSON с динамической структурой (JsonObject) - PullRequest
1 голос
/ 06 мая 2019

Я использую файл JSON, чтобы указать шаблон для тела запроса HTTP-запросов к бэкэнду. Я вставляю значения параметров в тело запроса через специальный синтаксис:

{
    "requestBody": {
        "desc": "{descriptionParameter}"
    }
}

Логика-заполнитель ищет {placeholder} шаблонов в строках JSON и заменяет их соответствующими значениями параметров.

Теперь я также хочу иметь возможность указать тело запроса с буквенными фигурными скобками, поэтому моя идея заключалась в том, чтобы не делать никакой замены, если фигурные скобки указаны в JSON:

{
    "requestBody": {
        "desc": "\u007BnonReplacedLiteral\u007D"
    }
}

Однако я не смог найти способ заполучить не декодированную строку JSON. Возможно ли это с Джексоном?


Вот код, который я сейчас использую: я использую Джексона ObjectMapper для анализа JSON в следующем объекте:

public class RequestTemplate {
    ObjectNode requestBody;

    // ... getters
}

Объект requestBody не имеет фиксированной структуры, поэтому я могу сопоставить его только с ObjectNode, а затем использовать дерево API с этой точки:

Iterator<Entry<String, JsonNode>> propertyIterator = requestBody.fields();
while (propertyIterator.hasNext()) {
    Entry<String, JsonNode> property = propertyIterator.next();
    String string = property.getValue().textValue();

    // string is now the decoded value - how would I get the non-decoded value?

    // ... parameter replacement logic
}
...