Json, problemas al crear el objeto JSONArray.

1,070 views
Skip to first unread message

Novato

unread,
Apr 23, 2012, 6:39:13 AM4/23/12
to desarrollad...@googlegroups.com
Hola a todos.

Queria hacer una consulta sobre un problema con una app que estoy desarrollando , no es mi intención colgarla en el market de momento , solo aprender un poco la programación android.
El problema que tengo es con un objeto json que intento crear y que constantemente me da error , hasta ahora tengo esto.

"public class GetHttpDates extends Activity {

    private HttpClient client;
    private HttpGet httpGet;
    private HttpResponse response;
    private StatusLine status;
    private HttpEntity entity;
    private StringBuilder buider;
    private String query;
    GetHttpDates(){
        client   = new DefaultHttpClient();
        httpGet  = new HttpGet("http://ergast.com/api/f1/current/driverStandings.json");
        response = null;
        status   = null;
        buider   = new StringBuilder();
    }
String get_manes(){
        int code = 0;
        try{
            response = client.execute(httpGet);
            status   = response.getStatusLine();
            code     = status.getStatusCode();
            if (code == 200){
                entity = response.getEntity();
                InputStream content= entity.getContent();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(content));
                String line = null;
                while ( reader.readLine() != null){
                    buider.append(line);
                }
            }
        }
        catch (IOException e){
            e.printStackTrace();
        }
        try{
            JSONArray arrayjson = new JSONArray(buider.toString());
            buider.delete(0, buider.length());
            for ( int i = 0;i < arrayjson.length();i++){
                JSONObject objectjson = arrayjson.getJSONObject(i);
                buider.append(objectjson.getString("driverId"));
            }
        }
        catch (JSONException e){
            e.printStackTrace();
        }
            //Toast.makeText(getApplicationContext(), String.format("%s",buider.toString()),8).show();
        return buider.toString();
    }"

En ningún momento me da errores a la hora de compilar pero al ejecutar el emulador, me aparece "org.json.JSONException: Value null of type org.json.JSONObject$1 cannot be converted to JSONArray"
 como soy novato total no se por donde seguir,  y aquí es donde me pierdo ya que si meto otra url .json me a funcionado bien y a creado el objeto JSONArray.
Necesito una pista de por donde seguir o cual es el problema ya que no lo veo por ningún lado.

Saludos y gracias.

Mauricio Montilla

unread,
Apr 23, 2012, 6:48:35 AM4/23/12
to desarrollad...@googlegroups.com
Usa algún plugin que te permita ver lo que devuelve
http://ergast.com/api/f1/current/driverStandings.json

Y te darás cuenta que tal y como dice la excepcion, el objeto primario
no es un JSONArray sino un JSONObject

Te he adjuntado un pantallazo con el plugin de Chrome
> --
> Has recibido este mensaje porque estás suscrito al grupo
> "desarrolladores-android" de Grupos de Google.
> Para ver este debate en la Web, visita
> https://groups.google.com/d/msg/desarrolladores-android/-/zTiV2X0wnykJ.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> desarrollad...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> desarrolladores-a...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en
> http://groups.google.com/group/desarrolladores-android?hl=es.
ergast.comapif1currentdriverStandings.png

Darry Castro

unread,
Apr 23, 2012, 10:23:10 AM4/23/12
to desarrollad...@googlegroups.com, Novato

Darry Castro

Buenos días,

Espero esto te ayude.

http://www.androidhive.info/2012/01/android-json-parsing-tutorial/




Saludos cordiales.
Ing. Darry Marlon Castro Capovich
Account Manager.
MCP Microsoft.
Aripagua, C.A.
Web site. http://www.aripagua.com

Este mensaje está destinado a las personas o entidades a quienes está dirigido y contiene información confidencial o privilegiada. Si ha recibido este mensaje y no está dirigido a usted, no podrá hacer uso del mismo, ni copiarlo o distribuirlo. Le rogamos se sirva notificarnos utilizando Reply Mail y borrar este mensaje, en caso que lo haya recibido por error. Gracias


Novato

unread,
Apr 24, 2012, 5:25:15 AM4/24/12
to desarrollad...@googlegroups.com, Novato

Gracias a los dos por la ayuda , pero algo estoy haciendo mal por que sigo sin conseguirlo.
Estoy usando esta url http://ergast.com/api/f1/seasons.json creo que es mas sencilla de ver en conjunto.
Hasta ahora lo que hago es crear un objeto JSONObject (como decía Mauricio Montilla )con los datos json , por lo que veo en debugeando la carga bien y no hay excepciones, despues creo un JSONArray y busco el tag Seasons que es el que me interesa para después acceder a las keys y values y es aquí donde me da error ya que no encuentra el tag Seasons.
Esto lo hago despues de ver la pagina que posteo Darry Castro pero ni aun asi sale.

JSONObject jsonobject = new JSONObject(buider.toString());
JSONArray arrayjson = jsonobject.getJSONArray("
Seasons");//no existe Seasons.


Estoy totalmente perdido.

Saludos.


Mauricio Montilla

unread,
Apr 24, 2012, 6:22:28 AM4/24/12
to desarrollad...@googlegroups.com
Para que no te vuelvas a 'perder', lee esto
http://www.json.org/json-es.html, antes de continuar con el código.

Desde el JSONObject que obtienes, puedes únicamente acceder a:
- xmlns
- series
- url
- limit
- offset
- total
- y al arreglo StandingsTable.

Desde StandingsTable, puedes acceder a:
- season
- y al arreglo StandingsLists

Desde StandingsLists, puedes acceder a:
- season
- round
- y al arreglo DriverStandings

Desde DriverStandings, puedes acceder a:
- position
- points
- wins
- arreglo Driver (driverId, url, givenName, familyName, dateOfBirth,
nationality)
- arreglo Constructors (constructorId, url, name, nationality)

Eso es todo lo que te ofrece la API. Parece que no tienes claro cuales
con Object {} y cuales Array [], una vez tengas claro eso podrás
recorrer cualquier JSON.

Ánimo.

Mauricio

> --
> Has recibido este mensaje porque estás suscrito al grupo
> "desarrolladores-android" de Grupos de Google.
> Para ver este debate en la Web, visita

> https://groups.google.com/d/msg/desarrolladores-android/-/B7sEIpaWND0J.

Novato

unread,
Apr 24, 2012, 9:49:58 AM4/24/12
to desarrollad...@googlegroups.com

Ahora si , gracias por el enlace , exacto no tenia ni idea de como se  recorría un objeto json ni como se diferenciaba ya puedo acceder a todos los nodos.
Gracias a todos por la ayuda.

Saludos.
Reply all
Reply to author
Forward
0 new messages