NoMethodError en el objeto de ejecución estándar de Android

Heya, tengo un error muy extraño que no puedo resolver cuando intento serializar objetos a JSON en todas las plataformas android, de 1.5 a 2.2 (tanto en teléfonos como emuladores).

Recibo este error:

E/AndroidRuntime(21017): Uncaught handler: thread AsyncTask #2 exiting due to uncaught exception E/AndroidRuntime(21017): java.lang.RuntimeException: An error occured while executing doInBackground() E/AndroidRuntime(21017): at android.os.AsyncTask$3.done(AsyncTask.java:200) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask.setException(FutureTask.java:124) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask.run(FutureTask.java:137) E/AndroidRuntime(21017): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068) E/AndroidRuntime(21017): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561) E/AndroidRuntime(21017): at java.lang.Thread.run(Thread.java:1096) E/AndroidRuntime(21017): Caused by: java.lang.NoSuchMethodError: org.json.JSONStringer.object E/AndroidRuntime(21017): at com.qype.radar.api.json.JsonSerializationHelper.startModel(JsonSerializationHelper.java:119) E/AndroidRuntime(21017): at com.qype.radar.api.json.JsonSerializationHelper.serializeCheckin(JsonSerializationHelper.java:94) E/AndroidRuntime(21017): at com.qype.radar.api.QypeApiImpl.submitCheckin(QypeApiImpl.java:157) E/AndroidRuntime(21017): at com.qype.radar.activities.tasks.SubmitCheckinTask.doCheckedInBackground(SubmitCheckinTask.java:29) E/AndroidRuntime(21017): at com.qype.radar.activities.tasks.SubmitCheckinTask.doCheckedInBackground(SubmitCheckinTask.java:1) E/AndroidRuntime(21017): at com.github.droidfu.concurrent.BetterAsyncTask.doInBackground(BetterAsyncTask.java:154) E/AndroidRuntime(21017): at android.os.AsyncTask$2.call(AsyncTask.java:185) E/AndroidRuntime(21017): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) E/AndroidRuntime(21017): ... 4 more 

Al llegar a la línea 'stringer.object' de 'startModel ()' al serializar una revisión en este código:

 package com.qype.radar.api.json; import org.json.JSONException; import org.json.JSONStringer; import com.qype.radar.model.Review; public class JsonSerializationHelper { private JSONStringer stringer = new JSONStringer(); ... public String serializeReview(Review review) throws JSONException { startModel("review"); value("rating", review.getRating()); value("language", review.getLanguage()); value("content", review.getText()); return endModel(); } ... private JSONStringer startModel(String name) throws JSONException { stringer.object(); stringer.key(name); stringer.object(); return stringer; } private String endModel() throws JSONException { stringer.endObject(); stringer.endObject(); return stringer.toString(); } private void value(String key, String value) throws JSONException { stringer.key(key); stringer.value(value); } private void value(String key, int value) throws JSONException { stringer.key(key); stringer.value(value); } } 

Lo más extraño de esto es que el código se compila bien y al depurar, el objeto JSONStringer se instancia correctamente, pero cualquier llamada a él arroja este error. También puedo, usando la reflexión de Java, descubrir que la clase existe, y los métodos que puedo recuperar del objeto de la clase están todos allí, y pueden ser invocados sin error.

El paquete org.json es un estándar en Android, y está disponible desde la versión 1 de la API.

Cualquier ayuda para resolver este problema sería apreciada, ya que simplemente no sé dónde buscar.

Resulta que fue un problema con el Android JAR de Maven Central. Tiene una dependencia de los JAR JSON, pero los que están rotos en Maven Central (la clase JSONStringer está vacía, sólo define un método toString ()).

Si también está utilizando Maven, puede arreglar esto mediante la implementación del tarro androide del SDK utilizando maven-android-sdk-deployer y desde allí.

Ver este hilo

  • Cannont resolver el símbolo JSONObject (Android Studio)
  • El valor del tipo org.json.JSONArray no se puede convertir en JSONObject
  • NoSQL DB para Android que MongoDB y CouchDB?
  • Utilizar JAXB (xjc) clases generadas en android
  • Convierta el Array de Java normal o ArrayList a Json Array en android
  • buena json lib como ios JSONModel
  • Cómo obtener la lista de usuarios en el análisis mediante la aplicación de Android
  • Android json analizar y almacenar en la base de datos
  • Pasar JSONArray a PHP desde Android
  • Cómo convertir el objeto de cursor en XML o JSON en android
  • Cómo analizar un JSONArray de JSONObjects en JAVA?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.