4 votes

Comment obtenir des données sous forme de tableau json à partir d'un serveur et les convertir en tableau java pour les utiliser dans une application Android ?

Duplicata possible

Comment analyser un JSON et transformer ses valeurs en tableau ?

[
   [
      "sn1",
      "Liquid_level",
      "85"
   ],
   [
      "sn2",
      "Liquid_level,Temperature",
      "95"
   ],
   [
      "sn2",
      "Liquid_level,Temperature",
      "50"
   ],
   [
      "sn3",
      "Liquid_level",
      "85.7"
   ],
   [
      "sn4",
      "Liquid_level",
      "90"
   ],
   [
      "sn5",
      "Volt_meter",
      "4.5"
   ],
   [
      "sn6",
      "Temperature",
      "56"
   ],
   [
      "sn8",
      "Liquid_level",
      "30"
   ]
]

Voici les données que je souhaite récupérer dans un tableau Java (pour créer un tableau dynamique).

Je peux obtenir une valeur de texte en utilisant ceci

String response = null;
            try {
                response = CustomHttpClient.executeHttpPost("http://test.tester.com/check.php", postParameters);
                String res=response.toString();}

4voto

shkschneider Points 2633

À partir de Comment analyser un JSON et transformer ses valeurs en tableau ? :

pour votre exemple :

{'profiles': [{'name':'john', 'age': 44}, {'name':'Alex','age':11}]}

vous devrez faire quelque chose dans ce sens :

JSONObject myjson = new JSONObject(the_json);
JSONArray the_json_array = myjson.getJSONArray("profiles");

renvoie l'objet tableau.

L'itération se fera ensuite comme suit :

    int size = the_json_array.length();
    ArrayList<JSONObject> arrays = new ArrayList<JSONObject>();
    for (int i = 0; i < size; i++) {
      JSONObject another_json_object = the_json_array.getJSONObject(i);
            //Blah blah blah...
            arrays.add(another_json_object);
    }

//Finally
JSONObject[] jsons = new JSONObject[arrays.size()];
arrays.toArray(jsons);

//The end...

Vous devrez déterminer si les données sont un tableau. que charAt(0) commence par [ ).

J'espère que cela vous aidera.

Crédits à https://stackoverflow.com/users/251173/the-elite-gentleman

1voto

Mehul Ranpara Points 2496

Analyse d'abord ce tableau json et le stocke dans une liste de tableaux (ArrayList)

              try 
             {
                      ArrayList<String> arl= new ArrayList<String>();
                      JSONObject jobj = new JSONObject(signedData);
                      JSONArray jroot = jobj.getJSONArray("xxxxx");

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

                  JSONObject jElement = jroot.getJSONObject(i);

                  arl.add(jElement.getString("xxxxx"));

              }

          }

          catch (Exception e)
          {
               Log.v("log", "Error parsing data " + e.toString());

          }

puis en utilisant la boucle forloop store to string Array

1voto

Matt Quiros Points 2236

La conversion de JSON en Java dépend en grande partie de la bibliothèque que vous utilisez pour effectuer cette tâche. Les autres réponses ici utilisent la bibliothèque org.json mais la plupart des geeks réagiront violemment à son utilisation parce qu'elle est assez lente. La bibliothèque la plus rapide que je connaisse est Jackson, mais je préfère personnellement Google-GSON parce qu'elle est suffisamment rapide tout en restant très facile à utiliser.

En regardant votre exemple de chaîne, vous semblez avoir un tableau de tableaux de chaînes. Dans Gson, il faut les considérer comme des tableaux de chaînes de caractères. Collection d'un Collection de String s. Voici un exemple de code :

import java.lang.reflect.Type;
import java.util.Collection;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class Main {
    public static void main(String[] args) {
        // your sample JSON string, converted to a java string
        String json = "[\n   [\n      \"sn1\",\n      \"Liquid_level\",\n      \"85\"\n   ],\n   [\n      \"sn2\",\n      \"Liquid_level,Temperature\",\n      \"95\"\n   ],\n   [\n      \"sn2\",\n      \"Liquid_level,Temperature\",\n      \"50\"\n   ],\n   [\n      \"sn3\",\n      \"Liquid_level\",\n      \"85.7\"\n   ],\n   [\n      \"sn4\",\n      \"Liquid_level\",\n      \"90\"\n   ],\n   [\n      \"sn5\",\n      \"Volt_meter\",\n      \"4.5\"\n   ],\n   [\n      \"sn6\",\n      \"Temperature\",\n      \"56\"\n   ],\n   [\n      \"sn8\",\n      \"Liquid_level\",\n      \"30\"\n   ]\n]";

        // instantiate a Gson object
        Gson gson = new Gson();

        // define the type of object you want to use it in Java, which is a collection of a collection of strings
        Type collectionType = new TypeToken<Collection<Collection<String>>>(){}.getType();

        // happiness starts here
        Collection<Collection<String>> stringArrays = gson.fromJson(json, collectionType);

        // simply print out everything
        for (Collection<String> collection : stringArrays) {
            for (String s : collection) {
                System.out.print(s + ", ");
            }
            System.out.println();
        }
    }
}

Et le résultat :

sn1, Liquid_level, 85, 
sn2, Liquid_level,Temperature, 95, 
sn2, Liquid_level,Temperature, 50, 
sn3, Liquid_level, 85.7, 
sn4, Liquid_level, 90, 
sn5, Volt_meter, 4.5, 
sn6, Temperature, 56, 
sn8, Liquid_level, 30, 

Cette information est tirée du guide de l'utilisateur de Google-GSON : https://sites.google.com/site/gson/gson-user-guide#TOC-Collections-Examples

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