2010-02-12 6 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(); 
     } 
    } 

Come si può vedere, questo codice di esempio stampa il KEY dei JSONs, seguito dai VALORI del JSONS.Come analizzare un JSON e trasformarne i valori in una matrice?

Sarebbe stampare profili, John se il JSON era come questo:

{'profiles':'john'} 

che è cool. Va bene, come posso lavorare con quelle variabili. Tuttavia, se il JSON era come questo:

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

In questo caso, l'intero valore sarebbe matrice. Fondamentalmente, voglio solo prendere quell'array (che è il "valore" in questo caso) ... e trasformarlo in un vero array che JAVA potrebbe usare. Come lo posso fare? Grazie.

+1

Si noti che questo non passerebbe un parser più severo. JSON richiede doppi apici attorno a nomi e stringhe (la citazione singola non è valida). –

+0

Non preoccuparti Jonathon ... JSONObject è un codice JSON.org fornito per l'analisi JSON in java. Quello che è stato detto da alex è solo un esempio ... –

+0

Ti ho dato un punto per fornirmi un codice semplice per analizzare la mia stringa json. – crafter

risposta

56

per il tuo esempio:

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

si dovrà fare qualcosa di questo effetto:

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

questo restituisce l'oggetto array.

Poi l'iterazione saranno i seguenti:

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... 

Si dovrà stabilire se i dati è una matrice (semplicemente controllando che charAt(0) inizia con [ carattere).

Spero che questo aiuti.

0

Si può preferire rapido JSON parser per soddisfare i requisiti ...

rapido JSON parser è molto semplice, flessibile, molto veloce e personalizzabile.Prova questo

[rapido JSON parser] (https://code.google.com/p/quick-json/) - caratteristiche rapido JSON -

  • Compatibile con le specifiche JSON (RFC4627)

  • -High Performance JSON parser

  • Supporta l'approccio di parsing flessibile/configurabile

  • convalida configurabile di coppie chiave/valore di qualsiasi JSON Gerarchia

  • Facile da usare # stampa del piede molto meno

  • Aumenta sviluppatore amichevole e facile da rintracciare eccezioni

  • Pluggable personalizzato convalida di supporto tasti -/Valori può essere convalidato configurando validatori personalizzati, come e quando incontrate

  • Verifica e non-validante supporto parser

  • supporto per due tipi di configurazione (JSON/XML) per l'utilizzo rapido JSON convalidare parser

  • Richiede JDK 1.5 # Nessuna dipendenza da librerie esterne

  • Supporto per JSON generazione attraverso serializzazione degli oggetti

  • Supporto per la selezione del tipo di raccolta durante il processo di

parsing per esempio

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