杰克逊:使用动态结构(JsonObject)从JSON获取未解码的JSON字符串值

时间:2019-05-06 12:35:40

标签: java json jackson json-deserialization jackson-databind

我正在使用JSON文件为请求主体指定模板,以向后端进行HTTP请求。我正在通过自定义占位符语法将参数值插入请求主体:

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

占位符逻辑在JSON字符串中查找{placeholder}模式,并将其替换为各自的参数值。

现在,我还希望能够使用文字大括号指定请求正文,因此我的想法是如果在JSON中引用大括号,则不做任何替换:

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

但是我找不到找到未解码JSON字符串的方法。杰克逊有可能吗?


这是我当前正在使用的代码:我使用Jackson 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
}

0 个答案:

没有答案