首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java boon JSON解析器从输出中删除空值

Java boon JSON解析器从输出中删除空值
EN

Stack Overflow用户
提问于 2017-02-09 07:33:59
回答 1查看 633关注 0票数 1

我有一个小函数,它接受输入的JSON字符串,使用boon将其解析为Map,替换特定键的值,返回修改后的Map的JSON字符串。

代码如下:

代码语言:javascript
复制
// 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 )

如何才能在不丢失空字段的情况下对其进行解析?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-09 08:16:29

使用toJson时,您使用的是默认的序列化程序工厂。来自boon源代码:

代码语言:javascript
复制
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());
    }
....
)

尝试使用带有includeNulls()的序列化器工厂,而不是使用toJson

代码语言:javascript
复制
JsonSerializer factory = new JsonSerializerFactory().includeNulls().create();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42125603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档