java - objeto - pasar de json a array
Cómo analizar un JSON y convertir sus valores en una matriz? (2)
Puede preferir el analizador rápido-json para cumplir su requisito ...
El analizador quick-json es muy directo, flexible, muy rápido y personalizable. Probar esto
[Quick-json parser] ( https://code.google.com/p/quick-json/ ) - funciones rápidas y rápidas -
Cumple con la especificación JSON (RFC4627)
Analizador JSON de alto rendimiento
Admite un método de análisis flexible / configurable
Validación configurable de pares clave / valor de cualquier Jerarquía JSON
Fácil de usar # Muy menos huella
Incrementa las excepciones amigables y fáciles de rastrear del desarrollador
Compatibilidad de validación personalizada conectable: las claves / valores se pueden validar configurando validadores personalizados cuando se encuentran
Soporte de analizador validación y no validación
Soporte para dos tipos de configuración (JSON / XML) para usar Quick-Json validating parser
Requerir JDK 1.5 # Sin dependencia en bibliotecas externas
Soporte para Json Generation a través de serialización de objetos
Soporte para selección de tipo de colección durante el proceso de análisis
Por ej.
JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);
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 puede ver, este código de muestra imprimirá la CLAVE de los JSON, seguido por los VALORES de los JSONS.
Imprimiría perfiles, John si el json fuera así:
{''profiles'':''john''}
Eso es genial. Está bien, ya que puedo trabajar con esas variables. Sin embargo, ¿y 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.
para tu ejemplo:
{''profiles'': [{''name'':''john'', ''age'': 44}, {''name'':''Alex'',''age'':11}]}
Tendrás 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.
Luego iterar 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...
Deberá determinar si los datos son una matriz (simplemente verificando que charAt(0)
comience con [
carácter].
Espero que esto ayude.