如何使用groovy在json中排除null属性

时间:2014-06-19 19:04:12

标签: json groovy null

使用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}}

2 个答案:

答案 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)

你会得到你想要的