0

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
4

1 に答える 1