Java Jackson JsonNode 使用排序键进行字符串处理
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18952571/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Hymanson JsonNode to string with sorted keys
提问by elhefe
I'm using Hymanson 2.2.3and need to convert a JsonNode tree into a string with sorted field keys. It's completely unclear to me how to do this, especially since the opposite is so simple - JsonNode jn = ObjectMapper.readTree(String s)
.
我正在使用Hymanson 2.2.3并且需要将 JsonNode 树转换为带有排序字段键的字符串。我完全不清楚如何做到这一点,特别是因为相反的事情非常简单 - JsonNode jn = ObjectMapper.readTree(String s)
.
It appears the correct method is void writeTree(JsonGenerator jgen,JsonNode rootNode)
. However, I see no way to then get the serialized String
from the JsonGenerator
. I presume that SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS
will still apply, since the JsonGenerator.Feature
s don't have that option. Is there a simpler way to do this - or if not, how do I retrieve the serialized string from the JsonGenerator
?
看来正确的方法是void writeTree(JsonGenerator jgen,JsonNode rootNode)
。但是,我认为没有办法String
从JsonGenerator
. 我认为这SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS
仍然适用,因为JsonGenerator.Feature
s 没有那个选项。有没有更简单的方法来做到这一点 - 或者如果没有,我如何从JsonGenerator
?
采纳答案by elhefe
This is the easiest way to do it, as provided by one of Hymanson's authors. There's currently no way to go straight from JsonNode
to String
with sorted keys.
正如Hyman逊的一位作者所提供的那样,这是最简单的方法。目前没有办法使用排序的键直接从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;
}