我正在尝试ORDER_MAP_ENTRIES_BY_KEYS,按照我在这个问题中读到的内容:
[Jackson JsonNode to string with sorted keys
但是在打印JsonNode对象时它似乎不起作用。
例如,以下代码:
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
HashMap<String,String> personHashMap = new HashMap<String,String>();
personHashMap.put("First", "Joe");
personHashMap.put("Last", "Bloe");
personHashMap.put("Age", "32");
System.out.println("-- Printing personHashMap gives:\n"+mapper.writeValueAsString(personHashMap));
String personJsonNode =
"{\"Last\": \"Bloe\", \"First\": \"Joe\", \"Age\": \"32\"}";
JsonNode personJsonObj = mapper.readTree(personJsonNode);
System.out.println("-- Printing personJsonNode gives:\n"+mapper.writeValueAsString(personJsonObj));
打印以下输出:
-- Printing personHashMap gives:
{
"Age" : "32",
"First" : "Joe",
"Last" : "Bloe"
}
-- Printing personJsonNode gives:
{
"Last" : "Bloe",
"First" : "Joe",
"Age" : "32"
}
注意personHashMap是如何按键排序的,而不是personJsonNode对象。
我做错了什么? THX。
答案 0 :(得分:4)
这是因为ORDER_MAP_ENTRIES_BY_KEYS
仅适用于Maps
,而不是JsonNodes
(这是一个奇怪的设计决定,但是......)。这就是为什么您引用的答案会将JsonNode
树转换为Object
之前进行字符串化。您需要在代码中执行相同的操作。