37 votes

Comment analyser un JSON et transformer ses valeurs en tableau?

public static void parseProfilesJson(String the_json){
       try {
            JSONObject myjson = new JSONObject(the_json);

            JSONArray nameArray = myjson.names();
            JSONArray valArray = myjson.toJSONArray(nameArray);
            for(int i=0;i<valArray.length();i++)
            {
                String p = nameArray.getString(i) + "," + ValArray.getString(i);
                Log.i("p",p);
            }       

        } catch (JSONException e) {
                e.printStackTrace();
        }
    }

Comme vous pouvez le voir, cet exemple de code affiche la CLÉ de la JSONs, suivi par les VALEURS de la JSONS.

Il serait d'imprimer des profils, john si le json était comme ça:

{'profiles':'john'}

C'est cool. C'est très bien, tant que je peux travailler avec ces variables. Cependant, si le JSON était comme ça:

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

Dans ce cas, la totalité de la valeur serait la matrice. En gros, je veux juste attraper un tableau (qui est la "valeur" dans ce cas)...et le transformer en un tableau réel que JAVA peut utiliser. Comment puis-je le faire? Merci.

58voto

Buhake Sindi Points 38654

pour votre exemple:

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

vous devrez faire quelque chose de cet effet:

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

cela renvoie l'objet tableau.

L'itération sera alors la suivante:

     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 (vérifier simplement que charAt(0) commence par le caractère [ ).

J'espère que cela t'aides.

1voto

rputta Points 369

Vous pouvez préférer rapide-parser json pour répondre à vos besoins...

rapide-parser json est très simple, flexible, très rapide et personnalisable. Essayez ceci

[rapide-parser json] (https://code.google.com/p/quick-json/) - rapide-json caractéristiques -

  • Compatible avec JSON spécification (RFC4627)

  • Haute Performance parser JSON

  • Prend en charge Flexible/Configurable par l'analyse de l'approche

  • Configurable de validation de paires clé/valeur de toute Hiérarchie JSON

  • Facile à utiliser # Très Moins d'impression de pied

  • Soulève développeur convivial et facile à tracer des exceptions

  • Enfichable Personnalisé en charge de la Validation - Clés/Valeurs peuvent être validées par la configuration personnalisée des validateurs comme et quand rencontrés

  • La validation et de la Non-Validation de l'analyseur de soutien

  • Prise en charge de deux types de configuration (JSON/XML) pour l'utilisation de quick-json de la validation de l'analyseur

  • Besoin du JDK 1.5 # Pas de dépendance à des bibliothèques externes

  • Support de Json Génération par le biais de sérialisation d'un objet

  • Soutien pour la collecte type de sélection lors de l'analyse des processus

Par exemple

JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);

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