我使用的是带有Groovy 3.0.7风格的版本x 4.0.3->CCD_ 1。它有一个包含方法的扩展模块:
public static Object getAt(JsonObject json, String key) {
return json.getValue(key);
}
现在,在我的代码中,我试图获得JsonObject
:的成员
json.getString( 'id' ) // works fine
json[ 'id' ] // works fine
json.id // throws NoSuchMethodException
我错过了什么?
是";点表示法";对于CCD_ 3;被否决的";在Groovy3中?
更新:
事实上,getAt()
对于点表示法是不够的,而getProperty()
是:
class A {
String a = 'aaaaaaaaa'
//Object getAt( String key ){ a }
def getProperty(String name) { a }
}
def a = new A()
assert 'aaaaaaaaa' == a[ 'aa' ]
assert 'aaaaaaaaa' == a.aaaa
assert 'aaaaaaaaa' == a.a
json.id
仅在存在getId()
方法、id
字段或用于拦截对此类实例(propertyMissing(String)
、vertx-lang-groovy
0等(的属性访问的适当位置时有效。默认情况下,getAt(JsonObject, String)
方法不会参与评估json.id
。