将javax.json.JsonObject转换为com.fasterxml.jackson.databind.JsonNode

时间:2016-04-08 07:27:33

标签: json jackson

我有一个javax.json.JsonObject并希望根据JSON架构验证它。所以我找到了com.github.fge.json-schema-validator。但它仅适用于com.fasterxml.jackson.databind.JsonNode

有没有办法将我的JsonObject转换为JsonNode

2 个答案:

答案 0 :(得分:5)

以下解决方案将javax.json.JsonObject解析为JSON字符串,然后使用Jackson的com.fasterxml.jackson.databind.JsonNode将JSON字符串解析为ObjectMapper

public JsonNode toJsonNode(JsonObject jsonObject) {

    // Parse a JsonObject into a JSON string
    StringWriter stringWriter = new StringWriter();
    try (JsonWriter jsonWriter = Json.createWriter(stringWriter)) {
        jsonWriter.writeObject(jsonObject);
    }
    String json = stringWriter.toString();

    // Parse a JSON string into a JsonNode
    ObjectMapper objectMapper = new ObjectMapper();
    JsonNode jsonNode = objectMapper.readTree(json);

    return jsonNode;
}

答案 1 :(得分:2)

public JsonNode toJsonNode(JsonObject jsonObj) {
    ObjectMapper objectMapper = new ObjectMapper();
    return objectMapper.readTree(jsonObj.toString());
}

这就是它。 JsonObject.toString()将转换为json String,您不需要使用任何其他内容。