Acceder

Ver la Versión Completa : [ SOLUCIONADO ] Json


Merche300
17/04/16, 10:57:23
¿como puedo parsear este JSON?

[
{
"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"

}
]
}
]

Y mi codigo:

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.erro r);
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(RankingAmonestaci onesCadetes);

} catch (JSONException e) {
Log.e(TAG, "Error de parsing: " + e.getMessage());
}
}

} catch (JSONException e) {
e.printStackTrace();
}
return rankingAmonestacionesCadetes;
}
}

Se que es un array pero no se como se hace para hacero.

Dexafree
17/04/16, 11:30:26
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


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();
}


Tienes un metodo que en principio se lanza cuando recibe un JSONArray, no? Y por qué no utilizas ese en vez del de parsear un JSONObject, cuando lo que tienes es un JSONArray?

Aparte, cuidado con el encoding, que veo que ahí hay problemas.