125

JSON 文字列をダウンロードして JSONArray に変換しています。私はそれをリストビューに入れ、後でそのリストビューから削除できるようにする必要があります.JSONArrayには.removeメソッドがないため(オバマに感謝)、それを配列リストに変換しようとしています.

ここに私のJSON(array.toString())があります:

[
    {
         "thumb_url":"tb1370913834.jpg",
         "event_id":"15","count":"44",
         "event_tagline":"this is a tagline",
         "event_name":"5th birthday",
         "event_end":"1370919600",
         "event_start":"1370876400"
    }
]

それを配列に入れ、それぞれのキーで文字列を呼び出せるようにする必要があります。どんな助けにも感謝します!

4

23 に答える 23

191
ArrayList<String> listdata = new ArrayList<String>();     
JSONArray jArray = (JSONArray)jsonObject; 
if (jArray != null) { 
   for (int i=0;i<jArray.length();i++){ 
    listdata.add(jArray.getString(i));
   } 
} 
于 2013-06-11T05:55:40.597 に答える
8

私は速い解決策を持っています。ファイルを作成するだけArrayUtil.java

import java.util.ArrayList;
import java.util.Collection;
import org.json.JSONArray;
import org.json.JSONException;

public class ArrayUtil
{
    public static ArrayList<Object> convert(JSONArray jArr)
    {
        ArrayList<Object> list = new ArrayList<Object>();
        try {
            for (int i=0, l=jArr.length(); i<l; i++){
                 list.add(jArr.get(i));
            }
        } catch (JSONException e) {}

        return list;
    }

    public static JSONArray convert(Collection<Object> list)
    {
        return new JSONArray(list);
    }

}

使用法:

ArrayList<Object> list = ArrayUtil.convert(jArray);

また

JSONArray jArr = ArrayUtil.convert(list);
于 2016-12-05T20:49:49.180 に答える
7

この方法を試してみてください。単純にそれをループして、独自の配列を作成します。このコードは、文字列の配列であると想定しています。特定の配列構造に合わせて変更するのは難しくありません。

JSONArray jsonArray = new JSONArray(jsonArrayString);
List<String> list = new ArrayList<String>();
for (int i=0; i<jsonArray.length(); i++) {
    list.add( jsonArray.getString(i) );
于 2013-06-11T06:03:08.083 に答える
7

JSON 文字列を ArrayList または Map に変換する代わりに、JSONObject自体を作成することができます。このオブジェクトには、必要に応じてキーで文字列値を取得したり、オブジェクトを削除したりする機能があります。

適切にフォーマットされた JSON 文字列からを作成するには、適切なコンストラクターJSONObjectを呼び出すだけです。

JSONObject json = new JSONObject(jsonString);
于 2013-06-11T06:07:58.313 に答える
5

Java 8 では、

IntStream.range(0,jsonArray.length()).mapToObj(i->jsonArray.getString(i)).collect(Collectors.toList())
于 2017-09-18T10:28:51.710 に答える
4
 JSONArray array = new JSONArray(json);
 List<JSONObject> list = new ArrayList();
 for (int i = 0; i < array.length();list.add(array.getJSONObject(i++)));
于 2014-12-02T10:17:06.953 に答える
2

便利にするには、POJO を使用します。

このようにしてみてください..

List<YourPojoObject> yourPojos = new ArrayList<YourPojoObject>();

JSONObject jsonObject = new JSONObject(jsonString);
YourPojoObject yourPojo = new YourPojoObject();
yourPojo.setId(jsonObject.getString("idName"));
...
...

yourPojos.add(yourPojo);
于 2013-06-11T06:28:12.067 に答える
1

Gsonの使用

    List<Student> students = new ArrayList<>();
    JSONArray jsonArray = new JSONArray(stringJsonContainArray);
    for (int i = 0; i < jsonArray.length(); i++) {
        Student student = new Gson().fromJson(jsonArray.get(i).toString(), Student.class);
        students.add(student);
    }
    return students;
于 2019-10-11T11:39:20.093 に答える
0

これでできること ( Java >= 8):

    // Functional (variable)
    Function<JSONArray, ArrayList<String>> convert = jsonArray -> (ArrayList<String>) jsonArray.stream()
        .map(item -> item.toString())
        .collect(Collectors.toList());

    // Call
    convert.apply(jsonArray);


    // Regular method (OOP)
    private Function<JSONArray, ArrayList<String>> convert() {
        return jsonArray -> (ArrayList<String>) jsonArray.stream()
            .map(item -> item.toString())
            .collect(Collectors.toList());
   }

   // Call
   convert().apply(jsonArray);

于 2021-11-20T17:58:14.617 に答える