考虑下面的JSON:
"collection1" :
{
"list1" : ["val1","val2","val3"]
"list2" : ["val1","val2","val3"]
},
"collection2" :
{
"list1" : ["val1","val2","val3"]
"list2" : ["val1","val2","val3"]
},
如果collection1
和collection2
都没有值,我想返回true。现在是否存在“无价值”可以通过多种方式确定:
collection1
和 collection2
为null
collection1
,collection2.list1
和 collection2.list2
为null
collection1
是null
和
collection2.list1
和 collection2.list2
不包含任何元素或 collection2.list1
为null
且 collection2.list2
不包含任何元素或 collection2.list2
null
且 collection2.list1
不包含任何元素你可以意识到这会导致许多组合。我可以直接将它翻译成if-else
块,但我发现它很无聊,或者可能是我感到无聊,我的头不工作,真的需要一些咖啡,因为我无法猜出任何更简单的事情,较小的(可能很少衬垫,如果一个衬垫不可能)和简洁这样一个简单/沉闷的东西。或者我只是在浪费时间和思考? Ans只是将其转换为if-else
块并离开?
我正在使用groovy编写代码,因此Java解决方案也可以正常工作。
答案 0 :(得分:0)
AllowAnonymous
使用辅助函数(也可以内联)
(collection1 == null) &&
((collection2 == null) || (nullOrEmpty(collection2.list1) && nullOrEmpty(collection2.list2)))
答案 1 :(得分:0)
也许这就是您正在寻找的表达方式:
!json?.collection1 && !json?.collection2?.list1?.size() && !json?.collection2?.list2?.size()
<强>解释强>
!json?.collection1
只有在json.collection1
为null
!json?.collection2?.list1?.size()
仅当collection2
为空或collection2.list1
为空或为空时才会为真。
!json?.collection2?.list2?.size()
仅当collection2
为空或collection2.list2
为空或为空时才会为真。
这里?
safe navigation operator有帮助。
希望它有所帮助,