Rhino: return JSON from within Java

I have the string representation of a JSON-serialized object in Java e.g. "{\"name\":\"John\",\"age\":24}". How do I parse and return it to the JavaScript context, just the way JSON.parse(str) would work in JS? Thanks.



The latest version of Rhino has only four args, and the fourth cannot be null. To solve this, you must create a simple class that implements org.mozilla.javascript.Callable:

import org.mozilla.javascript.Callable;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;

public class NullCallable implements Callable
    public Object call(Context context, Scriptable scope, Scriptable holdable, Object[] objects)
        return objects[1];

You can then call NativeJSON.parse like this:

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

Found the answer here: Access Rhino's native JSON.Stringify from Java

import org.mozilla.javascript.NativeJSON;

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

Another way to do it is by calling org.mozilla.javascript.json.JsonParser.parseValue. That is if you don't need to apply a reviver.

More interestingly, org.mozilla.javascript.NativeJSON is built around org.mozilla.javascript.json.JsonParser.parseValue. And you can see that here, https://github.com/mozilla/rhino/blob/master/src/org/mozilla/javascript/NativeJSON.java#L110.


Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.