Jackson JsonNode用排序键来串

时间:2013-09-23 05:55:02

标签: java sorting jackson

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

看来正确的方法是void writeTree(JsonGenerator jgen,JsonNode rootNode)。但是,我认为无法从JsonGenerator获取序列化的String。我认为SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS仍将适用,因为JsonGenerator.Feature没有该选项。有没有更简单的方法 - 或者如果没有,我如何从JsonGenerator检索序列化字符串?

1 个答案:

答案 0 :(得分:35)

这是杰克逊的一位作者提供的最简单的方法。目前无法使用排序键直接从JsonNode转到String

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;
}