在尝试使用groovy getting exception在列表闭包中写入if条件时
在尝试写入列表闭包中的if条件时,我在if处得到了异常,就像未预期的标记一样在尝试使用groovy getting exception在列表闭包中写入if条件时,groovy,Groovy,在尝试写入列表闭包中的if条件时,我在if处得到了异常,就像未预期的标记一样 def supplerJson=new jsonSluper.parseText(json) def details= supplerJson.get("student") def jsonBuilder = new StreamingJsonBuilder(string) jsonBuilder .root{ student { info details.get("address").collect { addre
def supplerJson=new jsonSluper.parseText(json)
def details= supplerJson.get("student")
def jsonBuilder = new StreamingJsonBuilder(string)
jsonBuilder .root{
student {
info details.get("address").collect { addres ->
[
"city" : addres.city ,
if(addre.country.equals("USA"))
{
"country" : 123
}
]
}
}
这是我这样写时的代码片段,如果在第*行*列*处发现异常,则会得到类似意外标记的异常。谁能帮我一下吗。
谢谢。不要尝试嵌入if语句,而是使用,例如:
[
"city": addres.city,
"country": addres.country.equals("USA") ? 123 : null
]
三元语句被理解为:
condition ? value if true : value if false
Groovy还有一个类似于三元语句的函数,它允许一些其他技巧,例如:
void doPrint(String message) {
println(message ?: 'default')
}
doPrint('My message') // Prints "My Message"
doPrint('') // Prints "default"
doPrint(null) // Prints "default"
Elvis运算符与三元语句的唯一区别在于,如果为true,则值自动成为条件语句
这还演示了如何将消息转换为布尔值以计算Elvis运算符,因此空值和null值都计算为false,从而打印else值
当您尝试构建内联映射时,所有这些都很有用
工具书类
docs.groovy-lang.org
docs.groovy-lang.org
groovy-lang.org
问题中的代码有大量错误和遗漏 假设您的Json类似于:
def json = '''[
{
"student": {
"address": {
"city": "BoomTown",
"country": "USA"
}
}
},
{
"student": {
"address": {
"city": "Paris",
"country": "France"
}
}
}
]'''
你把JsonSlurper拼对了:
然后你可以得到所有的学生:
def details = supplerJson.student
我猜字符串是一个编剧
然后您可以像这样构建json:
jsonBuilder .root {
student {
info details.address.collect { address ->
def map = ["city": address.city]
if (address.country == "USA") {
map << ["country": 123]
}
map
}
}
}
你好!不能将if语句放在映射定义的中间。。。当我使用电脑时,我会努力想出一个解决方案谢谢你的大脑,它对我帮助很大
def stringWriter = new StringWriter()
def jsonBuilder = new StreamingJsonBuilder(stringWriter)
jsonBuilder .root {
student {
info details.address.collect { address ->
def map = ["city": address.city]
if (address.country == "USA") {
map << ["country": 123]
}
map
}
}
}
stringWriter.toString()