java - 在 Eval () 中执行 toString() - Groovy(Gstring 中的方法调用)

标签 java groovy eval

考虑一下,

的值(value)
$RespNode

RespJson.seatbid[0].bid[0].price

我正在尝试运行

Eval.me('RespJson', RespJson, "assert $RespNode.toString() == '$aValue'") 

但出现错误

 [No such property: toString for class: java.lang.String]

当我运行这个时(直接运行,没有 Eval() )

assert RespJson.seatbid[0].bid[0].price.toString()==aValue

运行良好(没有错误)

下面的代码也可以正常工作(没有 toString() )

   Eval.me('RespJson', RespJson, "assert $RespNode == '$aValue'")

任何想法,如何使用 Eval() 运行 toString() 谢谢!

最佳答案

$RespNode.toString() 将立即被替换。您必须使用 ${RespNode}.toString() 才能通过 eval 运行它。否则请参阅 @WillP 的答案(respNode.toString 立即评估,并且 toString 不是属性)

def respJson = [seatbid:[[bid:[[price:666.0G]]]]]
def respNode = 'respJson.seatbid[0].bid[0].price'
def aValue = '666.0'
Eval.me('respJson', respJson, "assert ${respNode}.toString() == '$aValue'")

关于java - 在 Eval () 中执行 toString() - Groovy(Gstring 中的方法调用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261095/

相关文章:

java - 设置 Spring JmsListener 的 DeliveryMode

java - Java 中文件名兼容的哈希值

grails - 为什么我们在 g :select optionvalue 中使用闭包

javascript - 尝试使用 Javascript 将字符串转换为对象,但在 ie8 中出现语法错误

ruby - 动态地将模块中的方法添加到类的特定实例

java - 从 Java 执行 powershell 命令

grails - 在 Grails2.4.3 (Groovy) 中将 List (long) 转换为 List(String)

unit-testing - Groovy 每个实例元类方法重写在 Spock 测试中无法按预期工作

r - 将未计算的命令传递给 R 中的函数

java - Docx4j 哈希和盐