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 03/02/12, 18:21:35
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
deserializar json !!! ayudaaa

Tengo un web service que me manda una cadena json que es esta:

Código:
[{"StringProperty":"0","IntProperty":0,"DoubleProperty":0},{"StringProperty":"1","IntProperty":8,"DoubleProperty":53.98},{"StringProperty":"2","IntProperty":16,"DoubleProperty":107.96}]
y necesito deserializarlo en mi app pero no se como , me he guiado con algunos ejemplos de internet y he llegado a esto:

Código:
public void autor()     {                    SoapObject solicitud = new SoapObject(namespace, Metodo_getbookautor);           SoapSerializationEnvelope envoltorio = new SoapSerializationEnvelope(SoapEnvelope.VER11);           envoltorio.dotNet = true;           envoltorio.setOutputSoapObject(solicitud);           HttpTransportSE transporte = new HttpTransportSE(url);                      try {                 transporte.call(accionSoap_autor, envoltorio);                ///////////////                 Object result = (Object)envoltorio.getResponse();                                JSONString=result.toString();                try{                    jObject= new JSONObject(JSONString);                    jArray=jObject.getJSONArray("WebService");                    for (int i=0;i<jArray.length();i++)                    {                    JSONObject json_data= jArray.getJSONObject(i);                                        resultString= json_data.getString("StringProperty")+ " "                                 +json_data.getString("IntProperty")+ " "                                +json_data.getString("DoubleProperty");                    }                    }                catch (Exception e){                    e.printStackTrace();                }
pero cuando llega a jObject= new JSONObject(JSONString);
con debug jObject me da null y ya no hace lo demas, pero la verdad no se si eso este bien puesto que no se como es eso de la serializacion y deserializacion
Responder Con Cita


  #2  
Viejo 03/02/12, 20:43:32
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
¿Si imprimes JSONString te sale lo que pone arriba?

En caso de ser así, prueba a recibir jObject como un JSONArray, debería salirte distinto de NULL.

Si JSONString te sale vacío el problema lo tienes en la comunicación con la web.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 03/02/12, 20:56:02
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
si imprimo el JSONString si me sale lo de arriba, y ya cambie en lugar de object lo puse como array y ya me toma el valor gracias, pero ahora como le pongo para que vaya tomando los valores asi como lo tengo??

pero que hago con la line4a de

jArray=jObject.getJSONArray("");
bueno es que se supone que en las "" va el nombre del arreglo no?? pero el mio no tiene nombre , solo empieza con el [
Responder Con Cita
  #4  
Viejo 03/02/12, 21:00:21
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Prueba esto:

JSONArray jsonArray = new JSONArray(JSONString);
jsonArray.getJSONObject(0).getString("StringProperty")

El 0 lo puedes cambiar por el búcle de la longitud de jsonArray para que te coja todos los elementos que son StringProperty, pero por lo pronto empieza con eso.
Responder Con Cita
  #5  
Viejo 03/02/12, 21:08:35
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
ok muchas gracias , ya lo puse asi y ya salio pero solo sale el 0, no deberia de salir "StringProperty: 0", y despues lo cambie por el bucle pero solo me sale el ultimo resultado
Responder Con Cita
  #6  
Viejo 03/02/12, 21:14:16
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
No, te sale el valor de la propiedad que has puesto en el parametro, en este caso StringProperty

Si quieres coger el IntProperty sería con:

jsonArray.getJSONObject(0).getInt("IntProperty")

Y DoubleProperty con:

jsonArray.getJSONObject(0).getDouble("DoubleProper ty")

Te saldrá solo el último porque reutilizas la variable, imprime el contenido en cada paso del for y verás como te imprime los 3 StringProperty.
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 03/02/12, 21:27:51
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
mmm solo me saca el ultimo StringProperty pero entoncs ahorita checo eso y de verdad muchs gracias
Responder Con Cita
  #8  
Viejo 03/02/12, 21:33:56
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
oie y no tendras algun correo o pagina donde pueda consultarte en alguna otra ocacion por si tengo alguna otr dudilla, o entras seguido x aqui??
Responder Con Cita
  #9  
Viejo 03/02/12, 21:55:44
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
bueno y ya que estamos en lo de json , sabes como seria para serializar y mandar los datos a mi web service??
Responder Con Cita
  #10  
Viejo 03/02/12, 22:09:28
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Entro seguido, si tienes dudas te las podré resolver por aquí, siempre y cuando sepa hacerlo.

Serializar con JSON es un dolor de huevos tremendo, por eso mismo al final me lo dejé y pasé a XML, lo veo mucho más claro. Por eso ya he pasado por todo esto con JSON y lo tengo más o menos fresco.

Para serializar tienes que crear un JSONObject, y sobre ese JSONObject introduces elementos con put. Por ejemplo:

JSONObject jObject = new JSONObject();
jObject.put("StringProperty","Hola");

Si lo que quieres es generar un JSONArray tendrías algo así:

JSONArray jArray = new JSONArray();
JSONObject jObject = new JSONObject();
jObject.put("StringProperty","Hola");
jArray.put(jObject);

Todo menos la definición de jArray podrías meterlo en un bucle y así crearías todas las posiciones del JSONArray.
Responder Con Cita
  #11  
Viejo 03/02/12, 22:13:16
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
ok muchas gracias de nuevo, cuando me toque hacer eso de serializacion q no tardara mucho t aviso como me fue, ahorit sigo tratando de que me imprima los 3 resultados jejejejeje pero gracias
Responder Con Cita
  #12  
Viejo 04/02/12, 00:17:53
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
oie una duda muuy aparte de esto , sabes que es lo q tengo que hacer para poder poner el boton de registration de facebook en mi app???
Responder Con Cita
  #13  
Viejo 04/02/12, 01:03:57
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Temas de Twitter y Facebook los tengo pendientes ahora yo también para una aplicación que estoy desarrollando, aunque ahora ando liado en otras partes de la aplicación (además de su homóloga en IOS) así que no he tenido aún tiempo de verlo.
Responder Con Cita
  #14  
Viejo 04/02/12, 01:41:25
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
no te preocupes gracias de todas formas, hare un poco de googleo jejejeje y ya despues si necesitas algo espero poder explicarlo jejeje gracias por todo
Responder Con Cita
  #15  
Viejo 09/02/12, 20:02:01
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
dudaa

hola de nuevo oie una preguntota en lugar de poner

Código:
 text1.append(jArray.getJSONObject(i).getString("StringProperty")+" , "+
                                    jArray.getJSONObject(i).getInt("IntProperty")+" , "+
                                     jArray.getJSONObject(i).getDouble("DoubleProperty")+"\n");
no hay una forma para ponerle yo el tipo de objeto a reconstruir y que vaya llenado las propiedades en vez de que yo las obtenga poniendo su nombre???
Responder Con Cita
  #16  
Viejo 09/02/12, 20:47:21
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Todos los métodos de la clase JSONObject funcionan con una key, y realmente tiene sentido que sea así.

El JSON es como el XML (realmente es una forma más básica de XML, y por eso me pasé a XML porque lo veía más claro y porque puedes construirte objetos de deserialización de una forma muy sencilla), si tu programas una deserialización de un JSON va a ser para un JSON en concreto, no para algo genérico.

Un JSON (y un XML) no importa el orden, ni siquiera importa que una propiedad esté o no este (te devolverá NULL si no está). Lo que importa es que si tu buscas una propiedad la encuentres, da igual el orden en el que la generó el generador (valga la redundancia) del JSON.

No se si queda claro el concepto, pero creo que si.
Responder Con Cita
  #17  
Viejo 09/02/12, 21:14:18
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
mmm ps mas o menos, entonces eso seria como respuesta que no hay una forma???
Responder Con Cita
  #18  
Viejo 13/02/12, 18:04:28
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
podrias explicarme mas de esto que me mencionas????
Responder Con Cita
  #19  
Viejo 13/02/12, 21:02:00
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
hola lo que pasa es que ahora ando realizando un contador y me va bien pero lo que quiero es que cuando pulsen la pantalla se detenga, y lo unico q hace es que me sale el mensaje de pausa pero no se detiene podrian ayudarmeee??

Código:
public class TouchActivity extends Activity
{
    /** Called when the activity is first created. */
 boolean on,off;
 TextView tv,tvtxt;
 int con;

  MotionEvent event;
   @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       tv= (TextView) findViewById(R.id.contador);
       tvtxt= (TextView) findViewById(R.id.text);
        //hilo();
       off=true;
         background.start();
         
    }
       
    @Override
public boolean onTouchEvent(MotionEvent event) {
        if(event.getAction()==MotionEvent.ACTION_DOWN)
                          
              if(tvtxt.getText().equals(""))
                {
                    off = false;
                    tvtxt.setText("Pausa");
                }
                else
                {
                   
                        off=true;
                        tvtxt.setText("");
                 
                    }
        return super.onTouchEvent(event);
    
    }
        
   
      Thread background = new Thread ()
       {   
            @Override
            public void run ()
            {
                    
               
                      while(off=true)
                         {                                                                 
                             try {    
                                                                         
                                  Thread.sleep(1000);
                                  con=con+1;
                                
                                  handler.sendEmptyMessage(0);
                                   
                                 } catch (Exception ex)
                                      {
                                       ex.printStackTrace();
                                       //Termina el thread en background
                                      }
                     
                               
                                               
                        }
                      
                        }
                        
        };
           
   
      private Handler handler = new Handler()
        {
            public void handleMessage(Message msg)
            {
                tv.setText(Integer.toString(con));
            }
        };
}
este es mi codigoo
Responder Con Cita


  #20  
Viejo 14/02/12, 00:06:44
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Cita:
Originalmente Escrito por gohan0189 Ver Mensaje
while(off=true)
Eso debería ser off==true.

Con off=true estás haciendo la asignación, y una asignación a true devuelve true.

Es más, simplemente poniendo while(off) ya es suficiente, porque off es un booleano y por tanto ya contiene true o false.
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: 22:04:39 (GMT +2)

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