Parse Android Volley respuesta JSONArray
Estoy enviando una solicitud JSONArray GET con Volley, y está devolviendo la matriz JSON especificada. Aquí está mi solicitud:
JsonArrayRequest getRequest = new JsonArrayRequest(url, new Response.Listener<JSONArray>() { @Override public void onResponse(JSONArray response) { Log.d("Response", response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.d("Error.Response", error.toString()); } } ); VolleySingleton.getInstance(this).addToRequestQueue(getRequest); //Call to get dashboard feed }
Como puedes ver, actualmente estoy desconectando la respuesta. Quiero analizar el Array sin embargo y mostrar los resultados en una vista de lista. La documentación para esto no es grande, y yo soy bastante verde en términos de Android dev. ¿Cuál es la forma correcta de analizar una matriz JSON de Volley y mostrar los resultados en una vista de lista? He reunido que debo utilizar parseNetworkResponse
, pero no estoy seguro de cómo implementar.
- Cómo obtener datos json desde el servidor php a android móvil
- Pasar JSONArray a PHP desde Android
- Enviando cadena UTF-8 usando HttpURLConnection
- ¿Cómo manejar parámetros que pueden ser ARRAY u OBJECT en Retrofit en Android?
- Dibujo de rutas de conducción con waypoints en android (Google Maps, api dirección de Google, json parsing, decodificar google polyline)
- Jackson JSON Parser rendimiento
- Rellenar Listview de JSON
- No se puede analizar JSonArray en Android
- Análisis de JSON y guardarlos en la base de datos SQLite
- Desarrollo de Android: Obtención de datos de WordPress
- AsycnTask # 3 error al analizar el objeto JSON. String no se puede convertir a JSONObject
- Deserializar el mapa JSON usando Jackson no da el mapa correcto
- Mejor manera de determinar si existe un valor en el feed de JSON
Recomiendo que se adhieren a la biblioteca GSON para el análisis de JSON. Así es como una solicitud de Volley con procesamiento JSON incrustado podría verse entonces:
import java.io.UnsupportedEncodingException; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.toolbox.HttpHeaderParser; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; /** * Volley GET request which parses JSON server response into Java object. */ public class GsonRequest<T> extends Request<T> { /** JSON parsing engine */ protected final Gson gson; /** class of type of response */ protected final Class<T> clazz; /** result listener */ private final Listener<T> listener; public GsonRequest(String url, Class<T> clazz, Listener<T> listener, ErrorListener errorListener) { super(Method.GET, url, errorListener); this.clazz = clazz; this.listener = listener; this.gson = new Gson(); } @Override protected void deliverResponse(T response) { listener.onResponse(response); } @Override protected Response<T> parseNetworkResponse(NetworkResponse response) { try { String json = new String( response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success( gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JsonSyntaxException e) { return Response.error(new ParseError(e)); } } }
Imaginemos que tiene un método de servidor ubicado en http://example.com/api/persons/ que devuelve una matriz JSON de Person; Persona es la siguiente:
public class Person { String firstName; String lastName; }
Podemos llamar al método antes mencionado como este:
GsonRequest<Person[]> getPersons = new GsonRequest<Person[]>("http://example.com/api/persons/", Person[].class, new Listener<Person[]>() { @Override public void onResponse(Person[] response) { List<Person> persons = Arrays.asList(response); // TODO deal with persons } }, new ErrorListener() { @Override public void onErrorResponse(VolleyError error) { // TODO deal with error } }); VolleyQueue.get().add(getPersons);
Y finalmente en el oyente de la respuesta conseguimos un arsenal de la persona que se puede convertir a la lista y alimentado al adaptador de ListView.
Usted puede utilizar el proyecto Gson para trabajar con json en Java y Android, es tan simple este enlace es un enlace de muestra de usar gson
Cómo convertir objetos Java desde / hacia JSON (Gson)
Usted puede utilizar el JSONParsor
nativo en el marco de android sus necesidades son comparativamente menos y el JSON
es simple . Aquí hay un enlace para el tutorial.
Pero si utiliza objetos JSON
complejos , utilice bibliotecas como
- GSON
- Jackson
Encuentro GSON más fácil y más eficaz de usar. Usted sabe más sobre él de aquí
- ¿Cómo crear scrollview abultado en android?
- Error al cargar LayoutLib: com.android.layoutlib.bridge.Bridge