Rhino:从 Java 中返回 JSON

Rhino: return JSON from within Java

本文关键字:返回 JSON Java Rhino      更新时间:2023-09-26

我在Java中有一个JSON序列化对象的字符串表示形式,例如 "{'"name'":'"John'",'"age'":24}" .如何解析并将其返回到 JavaScript 上下文,就像JSON.parse(str)在 JS 中的工作方式一样?谢谢。

最新版本的 Rhino 只有四个参数,第四个不能为空。 要解决此问题,您必须创建一个简单的类来实现org.mozilla.javascript.Callable:

import org.mozilla.javascript.Callable;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
public class NullCallable implements Callable
{
    @Override
    public Object call(Context context, Scriptable scope, Scriptable holdable, Object[] objects)
    {
        return objects[1];
    }
}

然后你可以像这样调用 NativeJSON.parse:

Object result = NativeJSON.parse(context, scope, jsonString, new NullCallable());

另一种方法是调用org.mozilla.javascript.json.JsonParser.parseValue。也就是说,如果您不需要使用齐磊。

更有趣的是,org.mozilla.javascript.NativeJSON是围绕org.mozilla.javascript.json.JsonParser.parseValue而构建的。你可以在这里看到这一点,https://github.com/mozilla/rhino/blob/master/src/org/mozilla/javascript/NativeJSON.java#L110。

在这里找到答案:访问 Rhino 的原生 JSON。从 Java 字符串化

import org.mozilla.javascript.NativeJSON;
Object json = NativeJSON.parse(cx, scope, str, null, null);