我正在使用JDK6标准脚本。我需要存储和检索一些包含Java对象到JSON的JavaScript对象。我将json2.js加载到ScriptENgine中,如果对象都是在Scrip Engine中创建的,那么可以正常使用它而不会出现问题。在我尝试使用自己的Java类的那一刻,我遇到了一些错误,例如“object不支持toJSON”错误。
我在Java Scripting / Rhino上下文中没有找到太多关于JSON的信息。
我做错了吗?达到要求的最佳方式是什么?
答案 0 :(得分:1)
据我所知,rhino不包含内置的JSON序列化功能。
您看到的错误可能是因为json2.js使用语句typeof value.toJSON
来确定有问题的对象实现了自己的序列化函数。在JavaScript对象上,失败的属性查找返回undefined
。在Java对象上,失败的成员查找会抛出异常。
解决这个问题的一种方法是修改json2,使其遍历对象结构:
Object
原型或Java Object
基类,并且我不知道是否有人已经解决了通过反射将任意Java对象序列化为JSON的问题。如果是这样,那么这可能是一个很好的用途。
希望这有帮助!