2

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

4

3 回答 3

10

最新版本的 Rhino 只有四个 args,第四个不能为空。要解决这个问题,您必须创建一个实现 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());
于 2013-09-04T12:30:59.287 回答
3

另一种方法是调用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

于 2015-10-13T21:55:18.013 回答
2

在这里找到答案:Access Rhino's native JSON.Stringify from Java

import org.mozilla.javascript.NativeJSON;

Object json = NativeJSON.parse(cx, scope, str, null, null);
于 2012-06-01T19:23:48.890 回答