![]() |
|
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 |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
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}] 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(); } 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 |
|
#2
|
||||
|
||||
¿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. |
Gracias de parte de: | ||
#3
|
||||
|
||||
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 [ |
#4
|
||||
|
||||
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. |
#5
|
||||
|
||||
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
|
#6
|
||||
|
||||
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. |
Gracias de parte de: | ||
#7
|
||||
|
||||
mmm solo me saca el ultimo StringProperty pero entoncs ahorita checo eso y de verdad muchs gracias
|
#8
|
||||
|
||||
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??
|
#9
|
||||
|
||||
bueno y ya que estamos en lo de json , sabes como seria para serializar y mandar los datos a mi web service??
|
#10
|
||||
|
||||
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. |
#11
|
||||
|
||||
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
|
#12
|
||||
|
||||
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???
|
#13
|
||||
|
||||
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.
|
#14
|
||||
|
||||
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
|
#15
|
||||
|
||||
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"); |
#16
|
||||
|
||||
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. |
#17
|
||||
|
||||
mmm ps mas o menos, entonces eso seria como respuesta que no hay una forma???
|
#18
|
||||
|
||||
podrias explicarme mas de esto que me mencionas????
|
#19
|
||||
|
||||
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)); } }; } |
|
#20
|
||||
|
||||
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. |
Gracias de parte de: | ||
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 22:04:39 (GMT +2)
HTCMania: líderes desde el 2007