Avisos

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

Respuesta
 
Herramientas
  #1  
Viejo 03/04/12, 01:09:44
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

Jsonserializer

Hola tengo una duda lo que pasa es que mi web service me manda esto:

Código:
<string>{"Id":958521,"Poliza":{"Id":958520,"Folio":"958520","Derechos":0,"ComisionImporte":1234.5,"ComisionPct":10,"RecargosImporte":0,"RecargosPct":0,"Estatus":0,"Gastos":0,"Aseguradora":{"Id":2778,"NombreCompleto":"AXA SEGUROS SA DE CV","Clave":"AXA","DeshabilitaCalculos":false,"CalculoComisionIncluyeRecargo":false,"CalculoRecargoIncluyeDerechos":false},"Impuesto":{"Clave":"IVA-16","Nombre":"NUEVO IVA","Porcentaje":16},"Impuesto":{"Id":2189,"Clave":"IVA-16","Nombre":"NUEVO IVA","Porcentaje":16},"Ramo":{"Clave":"AUT","Nombre":"AUTOS","Id":2569,"Xtype":"pol.aut","DivisionOperativa":0},"SubRamo":{"Clave":"AUT","Nombre":"AUTOS IND","Id":2570,"Flotilla":false}},"Serie":"12345","Motor":"12345","Placas":null,"ConductorHabitual":null,"Contacto":null,"CoberturaAuto":0,"Marca":{"Id":2447,"Clave":"DEF","Descripcion":"DEFAULT","Ubicacion":{"Id":2185,"Path":"1","Nombre":"GAB STA FE"},"CentroDeBeneficio":{"Id":4,"Path":"1.1","Nombre":"Loader"},"Propietario":{"Id":1,"Email":"[email protected]","Nombre":"Usuario Loader","Username":"loader"},"Permiso":2,"UsuarioAdd":{"Id":1,"Email":"xxxxxxx","Nombre":"Usuario Loader","Username":"loader"},"FechaAdd":"\/Date(1273271245000-0500)\/","UsuarioUMod":{"Id":1,"Email":"xxxxxxx","Nombre":"Usuario Loader","Username":"loader"},"FechaUMod":"\/Date(1273271245000-0500)\/","UsuarioDel":null,"FechaDel":null,"Estatus":1,"RefWinsef":null,"RequiereAutorizacionFlujo":false},"Modelo":"2010","Version":"version","Descripcion":"DEFAULT 2010 version","EndosoAlta":null,"EndosoBaja":null,"GrupoAsegurados":null,"Inciso":"12345","Estatus":1,"Prima":0,"BeneficiarioPreferente":null,"Identificador":null,"Empleado":null,"TarjetaBancaria":null,"Ubicacion":{"Id":2185,"Path":"1","Nombre":"GAB STA FE"},"CentroDeBeneficio":{"Id":2213,"Path":"1.1.2.1.1","Nombre":"TI y Sistemas"},"Propietario":{"Id":2343,"Email":"xxxxxx","Nombre":"José Carlos Guzmán","Username":"cguzman"},"Permiso":2,"UsuarioAdd":{"Id":2343,"Email":"[email protected]","Nombre":"José Carlos Guzmán","Username":"cguzman"},"FechaAdd":"\/Date(1331255081000-0600)\/","UsuarioUMod":{"Id":2343,"Email":"xxxxxx","Nombre":"José Carlos Guzmán","Username":"cguzman"},"FechaUMod":"\/Date(1331255081000-0600)\/","UsuarioDel":null,"FechaDel":null,"RefWinsef":null,"RequiereAutorizacionFlujo":false}</string>
y tengo una app que se encarga de deserializar y tengo lo siguiente

Código:
public class JSONDecoder {
    
    public static Object decode(DecoderConfiguration config, String jsonString) throws InstantiationException, IllegalAccessException {
        
        Object instance = null;
        
        if (config != null && config.isList()) {
            
            Field[] fields = config.mainType.getFields();
            ArrayList<Object> al = new ArrayList<Object>();
            JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( jsonString );
            
            if (fields != null && fields.length > 0) {

                for (int i = 0; i < jsonArray.size(); i++) {
                    
                    JSONObject json = jsonArray.getJSONObject( i );
                    
                    instance = config.mainType.newInstance();

                    for (int j = 0; j < fields.length; j++) {

                        try {
                            setValue(config, instance, fields[ j ], json);
                        } catch (JSONException jsone) {
                            jsone.printStackTrace();
                        }

                    }
                    
                    al.add(instance);
                    
                }
                
            }
            
            instance = al.toArray();
            
        } else {
            
            Field[] fields = config.mainType.getFields();

            if (fields != null && fields.length > 0) {

                JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonString);

                instance = config.mainType.newInstance();

                for (int i = 0; i < fields.length; i++) {

                    try {
                        setValue(config, instance, fields[ i ], json);
                    } catch (JSONException jsone) {
                        jsone.printStackTrace();
                    }

                }

            }
        
        }
        
        return instance;
        
    }
cuando llega a esta parte JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonString); me manda detiene mi app , me gustaria saber si alguien sabe que error tengo
Responder Con Cita


  #2  
Viejo 03/04/12, 01:31:13
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Tanto como saber programar es saber depurar, leete todas las posibilidades de depuración que existen en Android y podrás ver cual es la Excepción (o el Error, que es muchísimo más grave, pero también menos común, y casi siempre por usar una API incorrecta o por fallos de memoria) que se produce al llegar a esa línea:

http://developer.android.com/guide/d...ing/index.html

De todos los métodos yo uso el "adb logcat" desde la línea de comandos, también es bastante bueno en las fases iniciales ir poniendo marcas de lo que se está ejecutando, usando el Log.d para ir viéndolo en el logcat mientras pruebas la aplicación.
Responder Con Cita
  #3  
Viejo 03/04/12, 18:17:58
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

me manda esto

Código:
          Could not find class   'org.apache.commons.collections.map.MultiKeyMap', referenced from method   net.sf.json.JsonConfig.
             Could not find class   'org.apache.commons.collections.map.ListOrderedMap', referenced from method   net.sf.json.JSONObject.
Responder Con Cita
  #4  
Viejo 03/04/12, 18:34:53
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Tiene toda la pinta que estás usando una librería externa a Android y te faltan otras librerías a la que esa librería hace referencia.
Responder Con Cita
  #5  
Viejo 03/04/12, 19:28:53
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

si de hecho estoy ocupando la libreria json-lib-2.4-jdk15
Responder Con Cita
  #6  
Viejo 03/04/12, 19:34:02
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

y con ella ocupo estas:

commons-beanutils-1.8.3
commons-lang-2.3
commons-lang3-3.1
commons-logging-1.1.1
ezmorph-1.0.6

la q no pongo es :

commons-collections-3.2.1

porque al correr mi app me marca el siguiente error

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Lorg/apache/commons/collections/ArrayStack;
at com.android.dx.dex.file.ClassDefsSection.add(Class DefsSection.java:123)
at com.android.dx.dex.file.DexFile.add(DexFile.java:1 63)
at com.android.dx.command.dexer.Main.processClass(Mai n.java:486)
at com.android.dx.command.dexer.Main.processFileBytes (Main.java:455)
at com.android.dx.command.dexer.Main.access$400(Main. java:67)
at com.android.dx.command.dexer.Main$1.processFileByt es(Main.java:394)
at com.android.dx.cf.direct.ClassPathOpener.processAr chive(ClassPathOpener.java:245)
at com.android.dx.cf.direct.ClassPathOpener.processOn e(ClassPathOpener.java:131)
at com.android.dx.cf.direct.ClassPathOpener.process(C lassPathOpener.java:109)
at com.android.dx.command.dexer.Main.processOne(Main. java:418)
at com.android.dx.command.dexer.Main.processAllFiles( Main.java:329)
at com.android.dx.command.dexer.Main.run(Main.java:20 6)
at com.android.dx.command.dexer.Main.main(Main.java:1 74)
at com.android.dx.command.Main.main(Main.java:95)


tu sabes que puedo hacer??
Responder Con Cita
  #7  
Viejo 03/04/12, 20:01:43
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Intenta hacerlo todo usando el paquete org.json, que es el que Android soporta de forma oficial.
Responder Con Cita
  #8  
Viejo 03/04/12, 21:09:44
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

pero es q el org.json no tiene unos metodos q ocupo
Responder Con Cita
  #9  
Viejo 05/04/12, 12:17:45
Array

[xs_avatar]
RubenGM85 RubenGM85 no está en línea
Miembro del foro
 
Fecha de registro: mar 2010
Localización: Girona
Mensajes: 435
Modelo de smartphone: LG Nexus 5
Tu operador: Vodafone
 Cita: Originalmente Escrito por gohan0189 Ver Mensaje
pero es q el org.json no tiene unos metodos q ocupo
¿Has probado Google GSON?

Parsear un objeto de tipo "MiClase" desde un String llamado "jsonString" sería tal que así:

Código:
MiClase obj = new Gson().fromJson(jsonString, MiClase.class);
Responder Con Cita
  #10  
Viejo 22/08/13, 10:15:45
Array

[xs_avatar]
osmaga2013 osmaga2013 no está en línea
Usuario novato en la web
 
Fecha de registro: ago 2013
Mensajes: 4
Modelo de smartphone: Sony Ericcson XPeria
Tu operador: Orange
Soy nuevo

Hola a todos, soy nuevo en esto del desarrollo de android ya que vengo de tecnología .NET de Microsoft.. y lo veo mas sencillo jajaj todo es empezar.

Bueno, decir que actualmente estoy usando la librería DSON, como dice el compañero Ruben es muy sencilla (por lo poco que he visto). Pero tengo un problema justo en esa línea.
Código:
MiClase obj = new Gson().fromJson(jsonString, MiClase.class);
[/quote]

Creo que el problema que tengo yo me lo da por la clase MiClase (que yo uso otro nombre).

pongo mi clase a ver si le veis algún defecto,.... por que yo no lo veo jajaja


import
com.google.gson.annotations.SerializedName;

public


class PacienteModel
{
@SerializedName("id")
public String id;

@SerializedName("Nombre")
public String _Nombre;

@SerializedName("Apellidos")
public String _Apellidos;

@SerializedName("sexo")
public Integer _Sexo;

}

y lo que hago en código es

Gson gson =


new Gson();
PacienteModel paciente = gson.fromJson(json, PacienteModel.class);

la cadena JSON es correcta {"id":"75247160S","Nombre":"Oscar","Apellidos":nul l,"sexo":"1"}

Espero que me ayudéis .... que estoy estancado.
Gracias de antemano!!! Saludos


Responder Con Cita
Respuesta

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



Hora actual: 01:46:10 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /