パラメータ付きの http get リクエストを送信する Java (JDK6) コードがあります。返される応答は、次のような要求で提供されたクエリ パラメーターへの応答を含む json ツリーを含む JavaScript 関数です。
function JavascriptFunction() { return { "Root" : [ { ... ] }; }
JSONノードを取得するために、JavaのScriptEngine APIを使用して、返された関数にバインドして実行しようとしています。
String response = EntityUtils.toString(httpResponse.getEntity());
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByExtension("js");
scriptEngine.eval(response);
String hopeThisIsJson = (String)((Invocable)scriptEngine).invokeFunction("JavascriptFunction");
返される「もの」が sun.org.mozilla.javascript.internal.NativeObject 型であるため、ClassCastException が発生します。
invokeFunction メソッドから返されたこのオブジェクトを、もともと「JavascriptFunction」メソッドから返された json ツリーに最終的に変換する方法を見つけようとしています。