2010-02-12 7 views
36
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 imprimera le KEY des JSONs, suivi par les VALEURS du JSONS.Comment analyser un JSON et transformer ses valeurs en un tableau?

Il imprimera profils, john si le JSON était comme ça:

{'profiles':'john'} 

C'est cool. C'est bien, car je peux travailler avec ces variables. Cependant, que faire si le JSON était comme ceci:

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

Dans ce cas, la valeur entière serait le tableau. Fondamentalement, je veux juste attraper ce tableau (qui est la "valeur" dans ce cas) ... et le transformer en un tableau réel que JAVA pourrait utiliser. Comment puis je faire ça? Merci.

+1

JSON requiert des guillemets doubles autour des noms et des chaînes (guillemets simples n'est pas valide). –

+0

Ne vous inquiétez pas Jonathon ... JSONObject est un code JSON.org fourni pour l'analyse JSON dans Java. Qu'est-ce qu'lex a mis était juste un exemple .... –

+0

Je vous ai donné un point pour fournir un code simple pour moi d'analyser ma chaîne JSON. – crafter

Répondre

56

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"); 

ce retourne l'objet tableau.

Ensuite itérer sera le suivant:

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

Espérons que cela aide.

0

Vous pouvez préférer analyseur rapide JSON pour répondre à vos besoins ...

analyseur JSON rapide est très simple, flexible, très rapide et personnalisable.Essayez ceci

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

  • Conforme aux spécifications JSON (de RFC4627)

  • analyseur JSON haute performance

  • Prend en charge l'approche d'analyse flexible/configurable

  • validation configurable de paires clé/valeur des JSON heirarchy

  • Facile à utiliser # Très Moins imprimé pied

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

  • Pluggable support de validation personnalisée - Touches/valeurs peut être validée par la configuration des validateurs sur mesure au fur et rencontré

  • et analyseur non Validating validants soutien

  • Prise en charge de deux types de configuration (JSON/XML) pour l'utilisation analyseur de validation rapide JSON

  • Exigent JDK 1.5 # Aucune dépendance à l'égard des bibliothèques externes

  • Prise en charge de JSON génération par sérialisation

  • Prise en charge de la sélection du type de collection au cours de processus d'analyse grammaticale

pour exemple Sachez que cela ne passerait pas un analyseur plus stricte.

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