加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Groovy中使用JSONBuilder排除空值

发布时间:2020-12-14 16:26:32 所属栏目:大数据 来源:网络整理
导读:是否可以使用默认的JsonBuilder库在Groovy中创建 JSON值以排除对象的所有空值?比如杰克逊在Java中通过注释类来排除空值. 一个例子是: { "userId": "25","givenName": "John","familyName": null,"created": 1360080426303} 哪个应该打印为: { "userId": "
是否可以使用默认的JsonBuilder库在Groovy中创建 JSON值以排除对象的所有空值?比如杰克逊在Java中通过注释类来排除空值.

一个例子是:

{
   "userId": "25","givenName": "John","familyName": null,"created": 1360080426303
}

哪个应该打印为:

{
   "userId": "25","created": 1360080426303
}

解决方法

不确定它是否适合您,因为我的方法适用于带有List属性的Map:

def map = [a:"a",b:"b",c:null,d:["a1","b1","c1",null,[d1:"d1",d2:null]]]

def denull(obj) {
  if(obj instanceof Map) {
    obj.collectEntries {k,v ->
      if(v) [(k): denull(v)] else [:]
    }
  } else if(obj instanceof List) {
    obj.collect { denull(it) }.findAll { it != null }
  } else {
    obj
  }
}

println map
println denull(map)

收益率:

[a:a,b:b,d:[a1,b1,c1,[d1:d1,d2:null]]]
[a:a,[d1:d1]]]

过滤空值后,您可以将Map渲染为JSON.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读