Rhino: return JSON from within Java

java, javascript, rhino

Solution

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
{
    @Override
    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());

Problem

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.

Original source

Related problems