- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个小函数,它接受输入 JSON 字符串,使用 boon
将其解析为 Map
,替换特定键的值,返回 JSON 字符串修改后的 map
。
代码如下:
// inputJson = {"key3":"A","key2":"B","key1":null,"keyX":[{"x":2019,"y":123,"z":456},{"x":2017,"y":234,"z":345},{"x":2018,"y":456,"z":567}]}
private static String sorter(String inputJson) {
JsonParserAndMapper mapper = new JsonParserFactory().strict().create();
Map<String, Object> map = mapper.parseMap(inputJson);
List<?> l1 = (List<?>) map.get("keyX");
sort(l1, Sort.sortBy("x"));
map.replace("keyX", l1);
for (String x: map.keySet())
System.out.println(map.get(x));
String outputJson = toJson(map); // problem seems to be here
return outputJson
// outputJson = {"key2":"B","key3":"A","keyX":[{"x":2017,"y":234,"z":345},{"x":2018,"y":456,"z":567},{"x":2019,"y":123,"z":456}]}
问题是,当我执行 toJson(map)
时,它会删除具有 null
值的键。因此,如果 inputJson
包含具有空值的键,它不会出现在输出中。 (注意:输出中缺少 key1
)
如何在不丢失空字段的情况下解析它?
最佳答案
使用 toJson 您正在使用默认的序列化器工厂。来自 boon 源代码:
public class JsonFactory {
private static ObjectMapper json = JsonFactory.create();
public static ObjectMapper create () {
JsonParserFactory jsonParserFactory = new JsonParserFactory();
jsonParserFactory.lax();
return new ObjectMapperImpl(jsonParserFactory, new JsonSerializerFactory());
}
....
)
不要使用 toJson,而是尝试使用带有 includeNulls() 的序列化器工厂
JsonSerializer factory = new JsonSerializerFactory().includeNulls().create();
关于Java boon JSON 解析器从输出中删除空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42125603/
我正在尝试使用 boon jsonfactory 解析我的类中的列表属性列表,但输出是一个空列表。 class Test { List> id; public List> getId(
我有一个小函数,它接受输入 JSON 字符串,使用 boon 将其解析为 Map,替换特定键的值,返回 JSON 字符串修改后的 map 。 代码如下: // inputJson = {"key3":
我正在使用 Boon JSON我想更改从 JSON 生成的类的字段名称。 我只想改变 {"first_name": "Cristine", "last_name": "McVie"} 因此它映射到 J
我正在使用 Boon api 来解析 json 字符串。在我的 json 字符串中,其中一个键用句点分隔,例如 -(com.stack.demo)。现在的问题是,boon 考虑到了这个时期,并分离出了
请考虑场景... 我正在为我的 Web 应用程序创建 CreateNewFolder 脚本。 .exec(http("request_") .post("/url/home")
我想知道如何使用 Gradle 将 Boon 或 Jackson 解析器添加到 android 项目中? 我找到了使用 GSON 的方法,但找不到使用 Boon 或 Jackson 的任何内容。 最佳
我是一名优秀的程序员,十分优秀!