JSON データを JavaScript 関数から Bean に渡すときに、次のエラーが発生します。
***java.lang.String cannot be cast to org.json.simple.JSONArray***
. 私はjson-simpleを使用してバックエンドでデータを解析しています。リッチフェイスによって提供されるa4j Js関数を使用して、JSONデータをactionParamとして渡しています。simple-json を使用して、渡された json データを解析およびデコードしています。
Configurations
richfaces 3.3.3
jsf v1.2
apache tomcat v7.0.x
simple-json
これが、Beanに送信しているjavascript変数です
var a = [
{
'name': 'John',
'height' : '170',
'age' : 26
},{
'name': 'Doe',
'height' : '180',
'age' : 30
}
];
removeServiceGroup(JSON.stringify(a));
これは、バックエンド Bean を呼び出すために使用する a4j:jsfunction です。
<a4j:jsFunction name="removeServiceGroup" action="#{someBean.removeServiceGroup}">
<a4j:actionparam name="jsonData" />
</a4j:jsFunction>
Bean では、これがデータを受信して解析する方法です
String a = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("jsonData");
System.out.println(a);
JSONParser parser = new JSONParser();
Object obj = parser.parse(a);
JSONArray arr = (JSONArray)obj;
system.out.println はこれをコンソールに表示します
"[{\"name\": \"John\", \"height\": \"170\", \"age\": 26}, {\"name\": \"Doe\", \"height\": \"180\", \"age\": 30}]"
私は何を間違っていますか。いくつかのフォーラムにアクセスして、いくつかの異なる方法でこれを実行しようとしましたが、すべて同じエラーメッセージで終わります
java.lang.String cannot be cast to org.json.simple.JSONArray