如何将Java对象转换为Jackson ObjectNode?

时间:2019-05-22 10:08:42

标签: java json object-notation jsonnode

我有一个Java对象类,例如Student。如何将其转换为ObjectNode?它可以是一个嵌套对象(多层嵌套)。

我正在尝试遵循以下代码将对象转换为ObjectNode,但是它首先将对象转换为String,然后将其转换为ObjectNode,这看起来很耗费操作。

ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

try {
    String json = mapper.writeValueAsString(student);
    JsonNode jsonNode = mapper.readTree(json);
    ObjectNode objectNode = jsonNode.deepCopy();
    return objectNode;
} catch (Exception e) {
    // Handle exception
}

我正在寻找一种更好的方法,因为我感觉通过这种方法,我正在执行2级序列化/反序列化。

public class Student {
    public String name;
    public int id;
    public ArrayList<Subjects> subjects;
    public Address address;
}

1 个答案:

答案 0 :(得分:1)

您可以使用valueToTree()。它的功能类似于将值序列化为JSON并将JSON解析为树,但效率更高。

ObjectNode tree = mapper.valueToTree(foo);