|
||
|
|
|
|||||||
| 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 |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
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>
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;
}
|
|
|
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
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.
|
|
#4
|
||||
|
||||
|
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.
|
|
#5
|
||||
|
||||
|
si de hecho estoy ocupando la libreria json-lib-2.4-jdk15
|
|
#6
|
||||
|
||||
|
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?? |
|
#8
|
||||
|
||||
|
pero es q el org.json no tiene unos metodos q ocupo
|
|
#9
|
||||
|
||||
|
¿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); |
|
#10
|
||||
|
||||
|
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); 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 jajajaimport 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 |