使用JSONOutput.toJSON将对象转换为groovy中的json表示,有没有办法排除空值以压缩JSON?
了解它可以使用jackson完成,但目前正在使用groovy JSonOutput。
目前的实施: Java Domain
class User {
String firstName;
String lastName;
}
Groovy脚本
def user = new User()
user.firstName="abc"
def mapUser = ["userkey",user]
JsonOutput.toJson(mapUser)
实际输出
{"userkey":{"firstName":abc,"lastName":null}}
预期输出
{"userkey":{"firstName":abc}}
答案 0 :(得分:0)
您可以手动创建对象的地图'属性并序列化:
def "exclude null values"() {
given:
def user = new User(firstName: 'abc')
def mapUser = [ "userkey":
user.properties
.findAll { it.key != 'class' && it.value }
]
expect:
JsonOutput.toJson(mapUser) == /{"userkey":{"firstName":"abc"}}/
}
(spock测试)
答案 1 :(得分:0)
您也可以使用 JsonGenerator
,但它从 2.5.0 开始出现:
def user = new User()
user.firstName="abc"
def mapUser = ["userkey",user]
def generator = new JsonGenerator.Options()
.excludeNulls()
.build()
generator.toJson(mapUser)
你会得到你想要的