我有java(JDK6)代码,它发送带参数的http get请求。我得到的响应是一个javascript函数,其中包含一个json树,其中包含对请求中提供的查询参数的响应,如下所示:
function JavascriptFunction() { return { "Root" : [ { ... ] }; }
我试图在java中使用ScriptEngine api绑定并执行返回的函数来检索JSON节点。
String response = EntityUtils.toString(httpResponse.getEntity());
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByExtension("js");
scriptEngine.eval(response);
String hopeThisIsJson = (String)((Invocable)scriptEngine).invokeFunction("JavascriptFunction");
我得到一个ClassCastException,因为返回的“thing”类型为sun.org.mozilla.javascript.internal.NativeObject。
我试图找出如何最终转换从invokeFunction方法返回的这个对象最初从“JavascriptFunction”方法返回的json树。
答案 0 :(得分:0)
您的JavaScript函数返回的是非JSON编码的对象。你可以试试这个:
String json = (String) scriptEngine.eval("JSON.stringify(JavascriptFunction());");
JavaScript代码中没有“JSON树”这样的东西。这是一个JavaScript对象文字表达式,也就是说它只是一个普通的JavaScript对象。