【问题标题】:How to convert list of JsonObject from google json to JsonNode object of Jackson如何将 JsonObject 列表从 google json 转换为 Jackson 的 JsonNode 对象
【发布时间】:2019-08-26 08:17:48
【问题描述】:

我有一个来自 google JSON 库的 JsonObject 列表,然后我需要调用一个第三方库,该库接受来自 Jackson 库的 JsonNode 对象。

我对 JSON 没有太多经验,并且一直在阅读这些内容,并且从 this 链接知道 JsonNode 是一个抽象类,因此无法创建它,看起来我必须使用 ObjectNode用于存储/转换JsonObject 但看起来需要一些解析才能做到这一点。

有人可以帮我将JsonObject 转换为ObjectNode 吗?

【问题讨论】:

  • 从源字符串化,然后转换为目标类型
  • @Kris,我尝试使用toStringjsonobject 进行字符串化,但之后不知道如何转换它ObjectNode,即您能否为第二部分提供一些代码示例
  • 嗯,我认为这只是谷歌搜索的问题,它会给出类似baeldung.com/jackson-json-to-jsonnode的结果

标签: java json jackson gson


【解决方案1】:

有人可以帮我将JsonObject 转换为ObjectNode吗?

可以通过以下代码实现:

private JsonNode toJsonNode(JsonObject jsonObject) throws IOException {
    return mapper.readTree(jsonObject.toString());
}

要转换回来,您可以使用:

private JsonObject toJsonObject(JsonNode jsonNode) throws IOException {
    String jsonString = mapper.writeValueAsString(jsonNode);
    JsonParser jsonParser = new JsonParser();
    return jsonParser.parse(jsonString).getAsJsonObject();
}

根据您的需要,对于更通用的解决方案,您可以考虑使用JsonElement 而不是JsonObject。代码与上面显示的代码非常相似:

private JsonNode toJsonNode(JsonElement jsonElement) throws IOException {
    return mapper.readTree(jsonElement.toString());
}
private JsonElement toJsonElement(JsonNode jsonNode) throws IOException {
    String jsonString = mapper.writeValueAsString(jsonNode);
    JsonParser jsonParser = new JsonParser();
    return jsonParser.parse(jsonString);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-27
    • 2014-05-23
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多