Jackson JsonNode 到带有排序键的字符串

2022-09-01 09:42:05

我使用的是 Jackson 2.2.3,需要将 JsonNode 树转换为具有排序字段键的字符串。我完全不清楚如何做到这一点,特别是因为相反的事情是如此简单 - .JsonNode jn = ObjectMapper.readTree(String s)

看起来正确的方法是void writeTree(JsonGenerator jgen,JsonNode rootNode)。。但是,我认为没有办法从JsonGenerator中获取序列化。我假设SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS仍然适用,因为s没有这个选项。有没有更简单的方法来执行此操作 - 或者如果没有,如何从中检索序列化字符串?StringJsonGenerator.FeatureJsonGenerator


答案 1

这是最简单的方法,正如杰克逊的一位作者所提供的。目前没有办法直接从到排序的键。JsonNodeString

private static final ObjectMapper SORTED_MAPPER = new ObjectMapper();
static {
    SORTED_MAPPER.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
}

private String convertNode(final JsonNode node) throws JsonProcessingException {
    final Object obj = SORTED_MAPPER.treeToValue(node, Object.class);
    final String json = SORTED_MAPPER.writeValueAsString(obj);
    return json;
}

答案 2

推荐