Java JSON顺序\u映射\u条目\u按\u键运行不一致
我正在尝试按照我在这个问题中读到的内容,按键排序地图条目: [ 但在打印JsonNode对象时,它似乎不起作用 例如,以下代码:Java JSON顺序\u映射\u条目\u按\u键运行不一致,java,json,Java,Json,我正在尝试按照我在这个问题中读到的内容,按键排序地图条目: [ 但在打印JsonNode对象时,它似乎不起作用 例如,以下代码: ObjectMapper mapper = new ObjectMapper(); mapper.enable(SerializationFeature.INDENT_OUTPUT); mapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); HashMap<String,S
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));
注意person personHashMap是如何按键排序的,而不是personJsonNode对象
我做错了什么?Thx.这是因为
按键排序映射条目只适用于映射
,而不适用于JsonNodes
(这是一个奇怪的设计决策,但是…)。这就是为什么您引用的答案在字符串化之前将JsonNode
树转换为对象的原因。您需要在代码中执行相同的操作
-- Printing personHashMap gives:
{
"Age" : "32",
"First" : "Joe",
"Last" : "Bloe"
}
-- Printing personJsonNode gives:
{
"Last" : "Bloe",
"First" : "Joe",
"Age" : "32"
}