Rhino: return JSON from within Java

后端 未结 3 1909
青春惊慌失措
青春惊慌失措 2021-01-22 08:51

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 JavaSc

相关标签:
3条回答
  • 2021-01-22 09:42

    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.

    0 讨论(0)
  • 2021-01-22 09:51

    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);
    
    0 讨论(0)
  • 2021-01-22 09:53

    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());
    
    0 讨论(0)
提交回复
热议问题