Java Rhino接受什么作为对象属性的有效名称?

Java Rhino接受什么作为对象属性的有效名称?,java,javascript,rhino,Java,Javascript,Rhino,我试图处理来自NativeObject的数据,但我发现对象属性的命名有一个小问题。对象的JavaScript代码为: var mainObject={ “内部对象”:{ "234" : { “财产1”:“1”, “财产2”:“2” } } } 我用Java处理它的方法如下所示: public void processNative(NativeObject obj){ if(NativeObject.hasProperty(obj,“innerObject”)){ NativeObject no

我试图处理来自
NativeObject
的数据,但我发现对象属性的命名有一个小问题。对象的JavaScript代码为:

var mainObject={
“内部对象”:{
"234" : {
“财产1”:“1”,
“财产2”:“2”
}
}
}
我用Java处理它的方法如下所示:

public void processNative(NativeObject obj){
if(NativeObject.hasProperty(obj,“innerObject”)){
NativeObject no=(NativeObject)NativeObject.getProperty(obj,“innerObject”);
Object[]propIds=NativeObject.getPropertyId(否);
for(int i=0;i
此代码将引发此异常:
java.lang.ClassCastException:org.mozilla.javascript.UniqueTag无法强制转换为org.mozilla.javascript.NativeObject

如果我强制转换为一个
UniqueTag
我实际上可以得到正确的值,在这种情况下将是
UniqueTag.NOT\u FOUND

我发现这有点混乱,因为我从对象本身获取属性键,它实际上存在于JavaScript代码中

如果我将对象的名称从“234”更改为“car”,代码将按预期工作,因此我假设命名存在问题。由此我了解到属性名可以是任何类型的字符串,因此使用数字组成的字符串应该没有问题

所以我想接下来的问题是:有没有一种方法可以让我不用重新命名就能解决这个问题

我还需要提到的一点是,我只能访问JavaScript代码和Java方法。其他一切都是一个黑匣子


谢谢

我在Scala也遇到了这个问题。NativeObject支持两个get方法get(int,Scritable)和get(string,Scriptable)。因此,如果一个属性键是一个数字字符串,我将其转换为int并使用get(int,yourObject)


这可能是问题的解决方案。我解决这个问题的方法是在键前面加一个$,从而将它变成一个字符串。我得检查一下你的解决方案是否也有效。