Rhino:从Java中返回JSON

时间:2012-06-01 19:19:19

标签: java javascript rhino

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

3 个答案:

答案 0 :(得分:10)

最新版本的Rhino只有四个args,第四个不能为null。要解决这个问题,您必须创建一个实现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());

答案 1 :(得分:2)

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

import org.mozilla.javascript.NativeJSON;

Object json = NativeJSON.parse(cx, scope, str, null, null);

答案 2 :(得分:2)

另一种方法是拨打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

相关问题