You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Groovy中如何为变量分配备选值:JSON指定键不存在时

解决JSON对象多键 fallback 生成集合的问题

你之前用||运算符得到布尔值是因为Groovy里逻辑或返回的是布尔结果,不是集合本身。要实现"Name"键存在时用它生成集合,否则用"address",可以用下面两种方法:

方法一:显式判断键是否存在

遍历每个JSON元素时,先检查当前元素有没有"Name"键,有就用它当键,没有就用"address":

def originals = readJSON text: sourceStagesText        
originalconfign = originals.collectEntries { 
    def key = it.containsKey('Name') ? it.Name : it.address
    [(key): it] 
}.asImmutable()

方法二:用Elvis运算符简化写法

如果"Name"键不存在或者值为null时都想用"address",可以用Groovy的Elvis运算符?:,写法更简洁:

def originals = readJSON text: sourceStagesText        
originalconfign = originals.collectEntries { 
    [(it.Name ?: it.address): it] 
}.asImmutable()

为什么之前的代码不对?

A || B这种写法是逻辑判断:如果集合A非空(为true)就返回true,否则判断集合B是否非空,最终返回的是布尔值,而不是返回A或者B集合本身,所以才会得到布尔结果而不是目标集合。

内容的提问来源于stack exchange,提问作者10raw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 10:01:47