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"));