在 Groovy 中使用 JSONBuilder 排除空值

2023-12-23

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

一个例子是:

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

应打印为:

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

不确定这是否适合你,因为我的方法适用于Map with 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)

yields:

[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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Groovy 中使用 JSONBuilder 排除空值 的相关文章

随机推荐

  • 带有回调 URL 的 Twitter4j getOAuthRequestToken() 在 Android 上失败?

    我正在尝试将 Twitter 集成到我的 Android 应用程序中 但似乎无法让 Twitter4j 注册我的应用程序 我所看到的关于 Android 问题的每个教程和问题都已有多年历史 从那时起事情似乎已经发生了变化 我按照以下步骤操作
  • 给定一个数字 X,估计该数字可能落在素数的有序列表中的哪个位置

    给定预先计算的素数有序列表和提供的数字 X 我想粗略估计 X 在素数列表中的位置 并从该点开始搜索 因此 我计算了 1 2 32 1 中的素数列表并将其存储在二进制文件中 我在一个针对该文件运行的程序中提供了一些方法 可以给我第 n 个素数
  • Numpy:通过分箱从关联中查找最小值和最大值

    先决条件 这是一个由此衍生的问题post https stackoverflow com questions 51691980 numpy grouping binning values based on associations 因此 一
  • 为什么我无法在 gdb 调试器中使用“print”访问向量中的值?

    我正在学习使用 gdb 调试器 但当该向量包含从另一个向量复制的值时 无法访问该向量的值 最终 下面的程序做了我想要它做的事情 将 nums 的值复制到新的向量 copyOfNums 中 但是当我在执行 copyNums 中的第一个 for
  • 一端的套接字上的 close() 是否也会在另一端关闭?

    如果 ESTABLISHED 套接字 通过客户端连接后connect 退出 因此内核关闭所有打开的文件描述符 另一端会发生什么 如果客户端发送FIN并且服务器ACK它 这只是半关闭状态 但是服务器试图read 在那个插座上 然后会发生什么
  • XQuery:为什么“() = ()”和“() eq ()”的计算结果都为 false?

    以下 XQuery 片段 let x return if not x eq x and not x x then wat else makes sense returns wat 为什么 这有效布尔值 https learn microso
  • 仅匹配以“www”或“http(s)://”开头的 URL,仅匹配以“www”或“http(s)://”开头的 URL

    我正在使用一个正则表达式我的博客网站的模式 使 URL 地址为可点击的链接 效果很好 该模式具有以下格式 href a zA Z0 9 2 256 a z 2 4 b a zA Z0 9 所以有什么问题 但最近我发现这个模式也匹配文件名因此
  • python中文件的权限更改

    我想更改当前目录树中所有文件的文件权限 我正在尝试打开每个目录并打开文件并使用更改权限os chmod 但是出现错误 import os import stat for files in os walk os chmod files sta
  • 使用 C# 在 List<> 中查找项目

    我有一个包含对象集合的列表 如何在该列表中搜索某个项目object Property myValue 您有几个选择 Using 可枚举 Where https learn microsoft com en us dotnet api sys
  • 我可以使用 SQL Server 2012 Express 来使用 SSDT/BIDS/SSIS 吗?

    理想情况下 我想在我的台式电脑上制作 SSDT SSIS 包 以便我可以测试并将其部署到生产服务器环境 在我的电脑上我有 Windows 7的 视觉工作室2008 Visual Studio 2010 外壳 SQL Server Expre
  • 文件未上传 PHP

    我尝试编写代码以将文件上传到 PHP 中的 media 文件夹 由于某种原因 它仍然不起作用 下面是执行代码 move uploaded file FILES file tmp name media FILES file name or d
  • 如何初始化静态向量成员?

    例如 struct A static vector
  • 如何判断资源是否不受管理?

    我正在使用 Visual Studio 2017 编写 C 应用程序 我努力通过使用 using 语句来处理我实例化的所有对象 如果我实例化的对象不基于可隐式转换为 System IDisposable 的类型 Visual Studio
  • Vim 搜索并突出显示脚本中的控制

    我正在编写一个脚本 我想在其中以编程方式控制搜索 并突出显示它们 search 函数结果没有突出显示 我认为 因此使用该函数对我来说没有用 我想做的是使用 正常 命令来搜索变量 但这似乎并不简单 我可以编写命令 execute normal
  • 在 R 中保存和增量更新最近邻模型

    有几个最近邻 R 包 例如 FNN RANN yaImpute 但它们似乎都不允许保存 NN 数据结构 覆盖树 KD 树等 以便可以计算新查询的最近邻重建整个树 R中有这样的函数吗 我正在寻找一个返回数据结构的函数 当新数据到达时我可以增量
  • mathjax \textsc

    我如何让像 textsc 这样的东西工作 显然有可能启用它这个数学溢出答案 https meta mathoverflow net discussion 1046 why doesnt mathit work 还有其他人找到了至少允许使用小
  • 方向更改时如何更改网格布局

    我正在创建一个win8应用程序 我需要更改网格的布局 以便当用户在方向之间翻转时所有内容都适合屏幕 我明白我需要使用VisualStateManager但我无法理解任何教程 如果我有这个代码
  • PayPal 完整日期格式

    PayPal 以以下格式发回 payment date 字段 19 19 09 Sep 27 2011 我正在使用 php 来计算 payment date 的剩余天数 但我的代码是基于在 2011 09 27 12 19 00 获取格式
  • 如何在 Angular 2 项目中分离管理和前端 Web

    我将使用 Angular 2 构建一个完整的项目 该项目包含管理面板和供用户使用的前端 Web 我不知道如何将管理与网络分开 我应该使用路由吗 但这需要我导入内部的所有组件app module ts或者还有另一种方法可以使用两个app mo
  • 在 Groovy 中使用 JSONBuilder 排除空值

    是否可以使用默认的 JsonBuilder 库在 Groovy 中创建 JSON 值以排除对象的所有空值 例如 Jackson 在 Java 中通过注释类来排除空值所做的事情 一个例子是 userId 25 givenName John f