2017-03-10 13 views
1

JSONを読み込み、その値をdataVOに格納しようとしています。 このdataVOには、ArrayListが含まれています。JSONObjectをArrayListに変換する方法

CODE:

if (jsonObject.get(fld.getName()) != null) { 
    if (fld.getType() == Integer.class) { 
      methList[i].invoke(mvo, Integer.parseInt(jsonObject.get(fldName).toString())); 
    } else if (fld.getType() == String.class) { 
      methList[i].invoke(mvo, jsonObject.get(fldName).toString()); 
    } else if (fld.getType() == Long.class) { 
      methList[i].invoke(mvo, Long.valueOf(jsonObject.get(fldName).toString())); 
    } else if (fld.getType() == ArrayList.class) { 
     /* HERE!! */ 
    }else { 
      methList[i].invoke(mvo, jsonObject.get(fldName).toString()); 
    } 
} 

私は.invokeに/ * HERE [i]はmethListを使用する方法がわかりません! * /。

私は

methList[i].invoke(mvo, jsonObject.get(fldName)); 

または

methList[i].invoke(mvo, (ArrayList) jsonObject.get(fldName)); 

を使用している場合は、エラーが発生しました。

ERROR:

org.json.JSONObject$1 cannot be cast to java.util.ArrayList 

どのように私はこのエラーを修正することができますか?

答えて

1

getJSONArrayを使用して、jsonオブジェクトからJSONArrayを取得します。 inbuilt関数が存在しないため、ArrayListを取得するには明示的な反復処理が必要です。

List<String> listdata = new ArrayList<>(); 
JSONArray jArray = jsonObject.getJSONArray(fldName); 
if (jArray != null) { 
    for (int i=0;i<jArray.length();i++){ 
    listdata.add(jArray.getString(i)); 
    } 
} 

methList[i].invoke(mvo, listdata); 
+0

私はあなたのコードを試してみましたが、次のエラーが発生しました:org.json.JSONException:値型のoption_listのヌルorg.json.JSONObject $ 1はJSONArray –

+0

に変換することができません。おそらく(組織の問題を解決しているようです.json.JSONException)。しかし、get関数を使用してActivityにアクセスすると、エラーが発生します。java.lang.ClassCastException:java.lang.Stringをcom.top_adv.myapplication1.DataVO.Ref_listVOにキャストできません。 –

+0

ああ、解決しました!ありがとう:) –

関連する問題