128 votes

Conversion de JSONarray en ArrayList

Je télécharge une chaîne JSON et la convertit en JSONArray. Je la place dans une liste et je dois pouvoir la supprimer ultérieurement. Comme JSONArray n'a pas de méthode .remove (merci Obama), j'essaie de la convertir en tableau.

voici mon JSON (le tableau.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"
    }
]

J'ai besoin de le mettre dans un tableau et de pouvoir appeler les chaînes de caractères par leurs clés respectives. J'apprécie toute aide !

1voto

Ashwani Sharma Points 132

Une seule ligne de code que j'ai utilisé pour convertir un tableau json en ArrayList pour la chaîne json ci-dessous stockée dans une variable nommée classData.

List<String> names = new Gson().fromJson(classData.getAsJsonObject("result").getAsJsonArray("names").toString(), new TypeToken<List<String>>(){}.getType());

{   
    "result": {
        "id": "104297",
        "class": "Chemistry",
        "total": 57,
        "names": [
            "Alex",
            "Dan",
            "Rex",
            "Tony",
            "Elizabeth"
        ],
        ...
    }
}

0voto

ceph3us Points 4819
public static List<JSONObject> getJSONObjectListFromJSONArray(JSONArray array) 
        throws JSONException {
  ArrayList<JSONObject> jsonObjects = new ArrayList<>();
  for (int i = 0; 
           i < (array != null ? array.length() : 0);           
           jsonObjects.add(array.getJSONObject(i++))
       );
  return jsonObjects;
}

0voto

yoAlex5 Points 2350

Variante générique

public static <T> List<T> getList(JSONArray jsonArray) throws Exception {

    List<T> list = new ArrayList<>(jsonArray.length());

    for (int i = 0; i < jsonArray.length(); i++) {

        list.add((T)jsonArray.get(i));
    }

    return list;

}

//Usage

List<String> listKeyString = getList(dataJsonObject.getJSONArray("keyString"));

0voto

ArrayList<String> listdata = new ArrayList<String>();     
JSONArray jArray = (JSONArray)jsonObject; 
if (jArray != null) { 
 listdata.addAll(jArray);
}

@simplified

0voto

Vivek Dhayaal Points 1

Une alternative plus simple à Java 8 :

JSONArray data = new JSONArray(); //create data from this -> [{"thumb_url":"tb-1370913834.jpg","event_id":...}]

List<JSONObject> list = data.stream().map(o -> (JSONObject) o).collect(Collectors.toList());

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X