是否可以使用默认的 JsonBuilder 库在 Groovy 中创建 JSON 值以排除对象的所有空值?例如Jackson 在Java 中通过注释类来排除空值所做的事情。
一个例子是:
{
"userId": "25",
"givenName": "John",
"familyName": null,
"created": 1360080426303
}
应该打印为:
{
"userId": "25",
"givenName": "John",
"created": 1360080426303
}
最佳答案
不确定对您是否合适,因为我的方法适用于 Map
与 List
特性:
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/