json - 在 Groovy 中使用 JSONBuilder 排除空值

标签 json groovy null jsonbuilder

是否可以使用默认的 JsonBuilder 库在 Groovy 中创建 JSON 值以排除对象的所有空值?例如Jackson 在Java 中通过注释类来排除空值所做的事情。

一个例子是:

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

应该打印为:
{
   "userId": "25",
   "givenName": "John",
   "created": 1360080426303
}

最佳答案

不确定对您是否合适,因为我的方法适用于 MapList特性:

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, c:null, d:[a1, b1, c1, null, [d1:d1, d2:null]]]
[a:a, b:b, d:[a1, b1, c1, [d1:d1]]]

过滤后null值,然后您可以渲染 Map作为 JSON。

关于json - 在 Groovy 中使用 JSONBuilder 排除空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14749817/

相关文章:

javascript - 当被过滤的数组包含 JSON 数据时,为什么我会收到 'cannot read property ' filter' of undefined' ?

java - 获取发布到 JAXB Web 服务端点的 XML 字符串

java - 为 Android 应用程序创建 Web 服务的最佳实践解决方案

sql - 如果找不到值,如何从函数返回值

MySQL COUNT NULL 内容按列,GROUP 按列

java - Gson节点/链接对象映射

java - 如何使用 grails 中的现有 java 类

groovy - 如何使 ThresholdFilter 在 logback 中工作

java - 如何映射对象列表以进行编辑和保存

background - Unity 中的 Kinect 游戏 : How to do background removal