简体   繁体   中英

Passing json data from javascript to Java

I'm trying to pass json data from javascript to java, like below. The idea is to pass the data to the java code as a javascript object (and not aa string which I know can be done ). I've tried the code below without success - idea was to use NativeJson.stringify to convert from a javascript object to a Java string, however this results in an Undefined instance instead of the expected string. Any idea on this could be achieved much appreciated.

in javascript file "test.js"

parser.fct ( {"abc":123,"def":456} )

in java

//1.binds javascript calls to Java
...
ScriptEngine engine = new ScriptEngine...
Bindings bindings = engine.createBindings();
bindings.put("parser", new Parser());
engine.eval("test.js");

//2. in Parser class
public void fct(Object obj){
   Context ctx = Context.enter();
   ScriptableObject scope = ctx.initStandardObjects();
   Object json = NativeJSON.stringify(ctx, scope, obj, null,null);

   //json returned is of type Undefined

}

Could not find a way to use NativeJSON.stringify(). I ended up building the json string "by hand", ie Iterating on the property ids of the native javascript object and adding these properties to a java Map.

The Map is then transformed into a json object using new JSONObject(map);

link to source code https://gist.github.com/eleco/c2bc77dca9ecc844a924

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM