66 votes

Convertir un tableau Java normal ou une liste de tableaux en tableau Json dans Android

Existe-t-il un moyen de convertir un tableau Java normal ou ArrayList à un tableau Json dans Android pour passer l'objet JSON à un webservice ?

115voto

Octavian Damiean Points 20620

Si vous voulez ou devez travailler avec un tableau Java, vous pouvez toujours utiliser la fonction java.util.Arrays statiques des classes utilitaires asList() pour convertir votre tableau en un List .

Quelque chose de ce genre devrait fonctionner.

String mStringArray[] = { "String1", "String2" };

JSONArray mJSONArray = new JSONArray(Arrays.asList(mStringArray));

Attention, le code est écrit à la main, considérez-le comme un pseudo-code.

1 votes

Est-ce que arrays.asList est nécessaire ? Même si JSONArray n'a pas de constructeur avec String[] comme paramètre, le code suivant fonctionne bien pour moi : String[] strings = {"a", "b"}; JSONArray json = new JSONArray(strings); System.out.println(json.toString());

1 votes

Les deux méthodes fonctionnent, mais au moins sous Android, JSONArray(strings) n'est pas pris en charge avant l'API 19.

0 votes

La façon dont cela fonctionne dans la version actuelle de Java est : new JSONArray().addAll(Arrays.asList(mStringArray))

40voto

Reno Points 22138
ArrayList<String> list = new ArrayList<String>();
list.add("blah");
list.add("bleh");
JSONArray jsArray = new JSONArray(list);

Il s'agit seulement d'un exemple utilisant une liste de chaînes de caractères.

6 votes

Yep ! Cela ne semble pas fonctionner sur les tableaux de chaînes normaux car ils ne font pas partie de la collection ( developer.Android.com/reference/java/util/Collection.html ) ? Mais si tout le reste échoue, vous pouvez simplement exécuter une boucle pour cela.

0 votes

Essayez de passer Arrays.asList(stringArray)

0 votes

asList() ne semble pas fonctionner, car j'ai ce problème en ce moment même.

8voto

Shivputra N Points 658

Exemple key = "Name" value = "Xavier" et la valeur dépend du nombre de tableau que vous passez dans le tableau.

 try
      {
      JSONArray jArry=new JSONArray();
      for (int i=0;i<3;i++)
      {
       JSONObject jObjd=new JSONObject();
       jObjd.put("key", value);
       jObjd.put("key", value);
       jArry.put(jObjd);
      }
      Log.e("Test", jArry.toString());
      }
 catch(JSONException ex)
     {

     }

7voto

Dead Programmer Points 5428

Vous avez besoin d'une bibliothèque externe

 json-lib-2.2.2-jdk15.jar

List mybeanList = new ArrayList();
mybeanList.add("S");
mybeanList.add("b");

JSONArray jsonA = JSONArray.fromObject(mybeanList);
System.out.println(jsonA);

Google Gson est la meilleure bibliothèque http://code.google.com/p/google-gson/

7voto

david m lee Points 1

C'est la syntaxe correcte :

String arlist1 [] = { "value1`", "value2", "value3" };
JSONArray jsonArray1 = new JSONArray(arlist1);

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