Я использую файл 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
}