2

我正在使用JDK6标准脚本。我需要存储和检索一些也包含 Java 对象到 JSON 的 JavaScript 对象。我将 json2.js 加载到 ScriptENgine 中,如果所有对象都是在 Scrip Engine 中创建的,则可以毫无问题地使用它。当我尝试使用自己的 Java 类时,我得到了一些错误,例如“对象不支持 toJSON”错误。

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

我做错了什么吗?实现要求的最佳方法是什么?

4

1 回答 1

1

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

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

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

  1. 它检查每个有问题的值是从 JavaScript 基Object原型还是 JavaObject基类扩展而来的,并且
  2. 对 Java 和 JavaScript 对象实例应用不同的编码逻辑。

我不知道是否有人已经解决了通过反射将任意 Java 对象序列化为 JSON 的问题。如果是这样,那么这可能是一个很好的用途。

希望这可以帮助!

于 2010-05-14T16:34:50.467 回答