|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
|
Herramientas |
#1
|
||||
|
||||
Json
¿como puedo parsear este JSON?
Código:
[ { "codCompeticion": "284", "nomCompeticion": "2ª.Cadete I \"Copa Coca Cola\" Valencia", "jornadas": [ { "jornada": "1", "idClubLocal": "0201211", "idEquipoLocal": "0201211301", "nomLocal": "Meliana C.F. \"A\"", "idClubVisitante": "0201045", "idEquipoVisitante": "0201045301", "nomVisitante": "Rafelbuñol C.F.", "resLocal": "0", "resVisitante": "3", "fecha": "17/10/2015", "hora": "10:30", "codInfo": "81769", "escudoLocal": "./img/logosClubes/0201211.jpg", "escudoVisitante": "./img/logosClubes/0201045.jpg" }, { "jornada": "2", "idClubLocal": "0201045", "idEquipoLocal": "0201045301", "nomLocal": "Rafelbuñol C.F.", "idClubVisitante": "0201573", "idEquipoVisitante": "0201573211", "nomVisitante": "F.B. Alfara Del Patriarca", "resLocal": "0", "resVisitante": "10", "fecha": "24/10/2015", "hora": "12:30", "codInfo": "123322", "escudoLocal": "./img/logosClubes/0201045.jpg", "escudoVisitante": "./img/logosClubes/0201573.jpg" } ] } ] Código:
import android.content.Context; import android.graphics.Bitmap; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; import com.android.volley.Request; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageRequest; import com.android.volley.toolbox.JsonArrayRequest; import com.android.volley.toolbox.Volley; import com.herprogramacion.restaurantericoparico.R; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; public class Calendario_Volley_Adapter extends ArrayAdapter { // Atributos private RequestQueue requestQueue; JsonArrayRequest jsArrayRequest; private static final String URL_BASE = "http://www.XXX"; private static final String URL_JSON = ""; private static final String TAG = ""; private static final String ESCUDO = "http://XXX"; List<Calendario_Volley> items; public Calendario_Volley_Adapter(Context context) { super(context,0); // Crear nueva cola de peticiones requestQueue= Volley.newRequestQueue(context); // Nueva peticion JSONObject jsArrayRequest = new JsonArrayRequest( Request.Method.GET, URL_BASE + URL_JSON, null, new Response.Listener<JSONArray>() { /** * Called when a response is received. * * @param response */ @override public void onResponse(JSONArray response) { } public void onResponse(JSONObject response) { items = parseJson(response); notifyDataSetChanged(); } }, new Response.ErrorListener() { @override public void onErrorResponse(VolleyError error) { Log.d(TAG, "Error Respuesta en JSON: " + error.getMessage()); } } ); // Anyadir peticion a la cola requestQueue.add(jsArrayRequest); } @override public int getCount() { return items != null ? items.size() : 0; } @override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); // Referencia del view procesado View listItemView; //Comprobando si el View no existe listItemView = null == convertView ? layoutInflater.inflate( R.layout.calendario_row, parent, false) : convertView; // Obtener el item actual Calendario_Volley item = items.get(position); // Obtener Views TextView textoNombre = (TextView) listItemView.findViewById(R.id.tv_Nombre); TextView textoTargetas = (TextView) listItemView.findViewById(R.id.tv_Fecha); TextView textoAmarillas = (TextView) listItemView.findViewById(R.id.tv_Hora); TextView textoDobles = (TextView) listItemView.findViewById(R.id.tv_Equipo_Local); TextView textoRojas = (TextView) listItemView.findViewById(R.id.tv_Equipo_Visitante); TextView textoEquipo = (TextView) listItemView.findViewById(R.id.tv_Result_Local); TextView textoResultado_Visitante = (TextView) listItemView.findViewById(R.id.tv_Result_Visitante); TextView textoArbitro = (TextView) listItemView.findViewById(R.id.tv_Arbitro); final ImageView imageEscudo_Local = (ImageView) listItemView. findViewById(R.id.tv_esc_local); final ImageView imageEscudo_Visitante = (ImageView) listItemView. findViewById(R.id.tv_esc_visi); // Actualizar los Views textoNombre.setText(item.getNombre()); textoTargetas.setText(item.getTargetas()); textoAmarillas.setText(item.getAmarillas()); textoDobles.setText(item.getDobles()); textoRojas.setText(item.getRojas()); textoEquipo.setText(item.getEquipo()); textoResultado_Visitante.setText(item.getResultado_Visitante()); textoArbitro.setText(item.getArbitro()); ImageRequest request = new ImageRequest( ESCUDO + item.getEscudo_Local(), new Response.Listener<Bitmap>() { @override public void onResponse(Bitmap bitmap) { imageEscudo_Local.setImageBitmap(bitmap); } }, 0, 0, null,null, new Response.ErrorListener() { public void onErrorResponse(VolleyError error) { imageEscudo_Local.setImageResource(R.drawable.error); Log.d(TAG, "Error en respuesta Bitmap: "+ error.getMessage()); } }); requestQueue.add(request); request = new ImageRequest( ESCUDO + item.getEscudo_Visitante(), new Response.Listener<Bitmap>() { @override public void onResponse(Bitmap bitmap) { imageEscudo_Visitante.setImageBitmap(bitmap); } }, 0, 0, null, null, new Response.ErrorListener() { public void onErrorResponse(VolleyError error) { imageEscudo_Visitante.setImageResource(R.drawable.error); Log.d(TAG, "Error en respuesta Bitmap: " + error.getMessage()); } }); requestQueue.add(request); // Anyadir peticion a la cola return listItemView; } public List<Calendario_Volley> parseJson(JSONObject jsonObject){ // Variables locales List<Calendario_Volley> rankingAmonestacionesCadetes = new ArrayList<>(); JSONArray jsonArray= null; try { // Obtener el array del objeto jsonArray = jsonObject.getJSONArray("jornadas"); for(int i=0; i<jsonArray.length(); i++){ try { JSONObject objeto= jsonArray.getJSONObject(i); Calendario_Volley RankingAmonestacionesCadetes = new Calendario_Volley( ("JORNADA - ")+objeto.getString("jornada"), ("FECHA - ")+objeto.getString("fecha"), objeto.getString("nomLocal"), ("HORA - ")+objeto.getString("hora"), objeto.getString("nomVisitante"), objeto.getString("resVisitante"), objeto.getString("resLocal")+(" - "), ("ARBITRO - ")+objeto.getString("resLocal"), objeto.getString("escudoLocal"), objeto.getString("escudoVisitante")+(" - ")); rankingAmonestacionesCadetes.add(RankingAmonestacionesCadetes); } catch (JSONException e) { Log.e(TAG, "Error de parsing: " + e.getMessage()); } } } catch (JSONException e) { e.printStackTrace(); } return rankingAmonestacionesCadetes; } } Última edición por Merche300 Día 06/11/16 a las 08:10:14. |
|
#2
|
||||
|
||||
Te recomiendo que te mires Gson.
Declarando el modelo y poniendole unas anotaciones es capaz de hacer el parseo el solo automáticamente. Aparte de eso, en tu codigo veo Código:
sArrayRequest = new JsonArrayRequest( Request.Method.GET, URL_BASE + URL_JSON, null, new Response.Listener<JSONArray>() { /** * Called when a response is received. * * @param response */ @override public void onResponse(JSONArray response) { } public void onResponse(JSONObject response) { items = parseJson(response); notifyDataSetChanged(); } Aparte, cuidado con el encoding, que veo que ahí hay problemas.
__________________
|
Gracias de parte de: | ||