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

Como se puede ver, este código de ejemplo imprimirá el CLAVE de los JSONs, seguido por los VALORES del JSONS.Cómo analizar un JSON y convertir sus valores en una matriz?

Sería imprimir perfiles, John si el JSON fue así:

{'profiles':'john'} 

Eso está bien. Está bien, ya que puedo trabajar con esas variables. Sin embargo, ¿qué pasaría si el JSON fuera así:

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

En este caso, el valor completo sería la matriz. Básicamente, solo quiero tomar esa matriz (que es el "valor" en este caso) ... y convertirla en una matriz real que JAVA podría usar. ¿Cómo puedo hacer eso? Gracias.

+1

Tenga en cuenta que esto no pasaría un analizador más estricto. JSON requiere comillas dobles para los nombres y las cadenas (la comilla simple no es válida). –

+0

No se preocupe Jonathon ... JSONObject es un código JSON.org proporcionado para el análisis JSON en Java. Lo que Alex puso fue solo ejemplo ... –

+0

Te di un punto por proporcionar un código simple para analizar mi cadena json. – crafter

Respuesta

56

por su ejemplo:

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

tendrá que hacer algo de este efecto:

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

Esto devuelve el objeto de matriz.

Entonces iteración será de la siguiente manera:

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

Usted tendrá que determinar si los datos es una matriz (simplemente para comprobar que se inicia con charAt(0)[ caracteres).

Espero que esto ayude.

0

Puede preferir analizador rápido JSON para satisfacer sus necesidades ...

rápido JSON analizador es muy sencillo, flexible, muy rápido y personalizable.Trate de hacer esto

[el analizador rápido JSON] (https://code.google.com/p/quick-json/) - características rápida JSON -

  • Cumple con la especificación JSON (RFC4627)

  • -Alto Rendimiento JSON analizador

  • Admite enfoque de análisis flexible/configurable

  • validación configurable de pares clave/valor de cualquier JSON Jerarquía

  • Fácil de usar # muy menos huella

  • Aumenta desarrollador de usar y fácil de rastrear excepciones

  • conectable personalizado de validación de apoyo teclas -/Valores puede ser validado mediante la configuración de los validadores personalizados como y cuando se encuentran

  • Validar y no validador apoyo analizador

  • Soporte para dos tipos de configuración (JSON/XML) para el uso de rápido-json validar analizador

  • Requerir JDK 1.5 # No dependencia de bibliotecas externas

  • Soporte para Json generación a través de la serialización de objetos

  • Soporte para selección del tipo de recogida durante el proceso de

de análisis sintáctico para por ejemplo,

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