java - 打印带有有序属性的 JSON
问题描述
我有 JSON 与特定顺序的对象:
{
"Aaa": {
"Langs": {
"Val": [
"Test"
],
"Pro": [
"Test2"
]
}
},
"Bbb": {
"Langs": {
"Val": [
"Test"
],
"Pro": [
"Test2"
]
}
},
"Ddd": {
"Langs": {
"Val": [
"Test"
],
"Pro": [
]
}
},
}
我想在和Ccc
之间添加新对象。我试图像这样配置对象映射器:Bbb
Ddd
ObjectMapper mapper = new ObjectMapper()
.enable(SerializationFeature.INDENT_OUTPUT)
.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
然后使用此代码打印,但Ccc
在文件末尾结束。
DefaultPrettyPrinter prettyPrinter = new DefaultPrettyPrinter();
prettyPrinter.indentArraysWith(DefaultIndenter.SYSTEM_LINEFEED_INSTANCE);
//Write whole JSON in FILE
String finalJson = mapper.writer(prettyPrinter).writeValueAsString(rootFlores);
finalJson = finalJson.replaceAll("\\[ ]", "[" + System.lineSeparator() + " ]");
finalJson = finalJson.replaceAll("/", "\\\\/");
Files.write(Paths.get("DictionaryFlores_new.json"), Collections.singleton(finalJson));
这里有一种如何打印 JSON 排序的方法吗?
解决方案
根据这个答案,杰克逊 SORT_PROPERTIES_ALPHABETICALLY 仅适用于 POJO 属性,不适用于地图。在 JSON 中,Map 和 Object 没有区别,所以需要先在 Map 中设置顺序,使用 LinkedHashMap 或 TreeMap
推荐阅读
- r - 如何在数据帧计算中用向量函数替换 R 中的 for 循环?
- linear-programming - 多重最优解问题中的人工变量 - 线性规划
- css - 分辨率无关的 SVG 过滤器
- django - 如何更改 Django 中 DateTime 字段中日期的显示格式?
- swift - 高阶函数生成两个日期之间的日期间隔?
- python - 无法安装 python 包 SSL 证书问题
- python - 在 div 内滚动时突破 while 循环
- kubernetes - 有没有办法在 azure devops 版本中为部署添加标签?
- react-select - 为什么“创建”选项在 React-Select 的 AsyncCreatableSelect 中不可见
- git - 如何在 Git Gui 分阶段更改视图中可视化每个字符的差异?