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  
Viejo 17/04/16, 10:57:23
Avatar de Merche300
Merche300 Merche300 no está en línea
Betatester oficial
Mensajes: 625
 
Fecha de registro: dic 2008
Localización: Valencia
Mensajes: 625
Modelo de smartphone: NEXUS 5 - ONEPLUS 3
Versión de ROM: Cata
Versión de Radio: Radio Macuto
Tu operador: Pepephone
Mencionado: 0 comentarios
Tagged: 0 hilos
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"

      }
    ]
  }
]
Y mi codigo:

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; 
} 
}
Se que es un array pero no se como se hace para hacero.

Última edición por Merche300 Día 06/11/16 a las 08:10:14
Responder Con Cita


  #2  
Viejo 17/04/16, 11:30:26
Avatar de Dexafree
Dexafree Dexafree no está en línea
Mr. FAQMan
Mensajes: 8,021
Compra y venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Versión de ROM: Android 4.1.1 Jelly Bean
Versión de Radio: KF1
Tu operador: Movistar
Mencionado: 65 comentarios
Tagged: 2 hilos
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(); 
}
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.
Responder Con Cita
Gracias de parte de:
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 04:25:20 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007