【问题标题】:How to exclude null properties in json using groovy如何使用groovy排除json中的空属性
【发布时间】:2014-08-10 10:53:31
【问题描述】:

在groovy中使用JSONOutput.toJSON将对象转换为json表示,有没有办法排除空值来压缩JSON?

了解可以使用jackson完成,但目前使用的是groovy JSonOutput。

当前实施: Java 域

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

【问题讨论】:

  • 你现在用得怎么样?
  • 为什么不使用 JsonBuilder,它使用 JsonOutput 但为您提供更多选择...
  • 提供任何示例代码。
  • @dmahapatro 添加了代码 sn-p 和当前实现。我会试试 JsonBuilder tim_yates

标签: json groovy null


【解决方案1】:

您可以从对象的属性手动创建一个映射并将其序列化:

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"}}/
}

(斯波克测试)

【讨论】:

    【解决方案2】:

    您也可以使用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)
    

    你会得到你想要的

    【讨论】:

      猜你喜欢
      • 2010-12-04
      • 1970-01-01
      • 2022-11-02
      • 2014-07-18
      • 1970-01-01
      • 2020-09-28
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多