リストの入れ方 JSONObjectに変換してそのオブジェクトを読み込むには?質問する

リストの入れ方 JSONObjectに変換してそのオブジェクトを読み込むには?質問する

List<class>を json オブジェクトに変換し、json オブジェクトからデータを走査したいと考えています。

もしこれが単なるものだったら、List<String>次のようなことができます:

JSONObject obj = new JSONObject();
List<String> sList = new ArrayList<String>();
sList.add("val1");
sList.add("val2");

obj.put("list", sList);

次に、リストを次のように走査します。

JSONArray jArray = obj.getJSONArray("list");
for (int ii = 0; ii < jArray.size(); ii++)
    System.out.println(jArray.getString(ii));

クラスを使用する場合の問題は、各クラス要素内のデータにアクセスする必要がありList<class>、それを JSON にエンコード/トラバースする方法がわからないことです。ご協力いただければ幸いです。

ベストアンサー1

getJSONObject()の代わりにを呼び出しますgetString()。これにより、配列内の JSON オブジェクトに対するハンドルが提供され、そこからオブジェクトのプロパティを取得できるようになります。

List<SomeClass>たとえば、およびSomeClassを持つからプロパティ「value」を取得するには、String getValue()次のようにしますsetValue(String value)

JSONObject obj = new JSONObject();
List<SomeClass> sList = new ArrayList<SomeClass>();

SomeClass obj1 = new SomeClass();
obj1.setValue("val1");
sList.add(obj1);

SomeClass obj2 = new SomeClass();
obj2.setValue("val2");
sList.add(obj2);

obj.put("list", sList);

JSONArray jArray = obj.getJSONArray("list");
for(int ii=0; ii < jArray.length(); ii++)
  System.out.println(jArray.getJSONObject(ii).getString("value"));

おすすめ記事