【发布时间】:2013-08-25 20:33:09
【问题描述】:
我有 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,因为返回的“事物”是 sun.org.mozilla.javascript.internal.NativeObject 类型。
我试图弄清楚如何最终将从invokeFunction方法返回的这个对象转换为最初从“JavascriptFunction”方法返回的json树。
【问题讨论】:
-
你在这里检查了响应的值吗:String response = EntityUtils.toString(httpResponse.getEntity());
-
我确实检查了值。这是字符串化的 Javascript 函数。
标签: java javascript json rhino javascript-engine