JDK6脚本引擎中是否存在对JSON的“本机”支持?

时间:2010-05-03 10:11:46

标签: java json rhino

我正在使用JDK6标准脚本。我需要存储和检索一些包含Java对象到JSON的JavaScript对象。我将json2.js加载到ScriptENgine中,如果对象都是在Scrip Engine中创建的,那么可以正常使用它而不会出现问题。在我尝试使用自己的Java类的那一刻,我遇到了一些错误,例如“object不支持toJSON”错误。

我在Java Scripting / Rhino上下文中没有找到太多关于JSON的信息。

我做错了吗?达到要求的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

据我所知,rhino不包含内置的JSON序列化功能。

您看到的错误可能是因为json2.js使用语句typeof value.toJSON来确定有问题的对象实现了自己的序列化函数。在JavaScript对象上,失败的属性查找返回undefined。在Java对象上,失败的成员查找会抛出异常。

解决这个问题的一种方法是修改json2,使其遍历对象结构:

  1. 它会检查所讨论的每个值是否都来自JavaScript基础Object原型或Java Object基类,并且
  2. 为Java和JavaScript对象实例应用不同的编码逻辑。
  3. 我不知道是否有人已经解决了通过反射将任意Java对象序列化为JSON的问题。如果是这样,那么这可能是一个很好的用途。

    希望这有帮助!