【问题标题】:Is there "native" support for JSON in JDK6 Script Engine?JDK6 脚本引擎中是否有对 JSON 的“本机”支持?
【发布时间】:2010-05-03 10:11:46
【问题描述】:

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

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

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

【问题讨论】:

标签: java json rhino


【解决方案1】:

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

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

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

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

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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 2010-09-22
    • 2016-04-27
    • 1970-01-01
    相关资源
    最近更新 更多