¿Conversión de json string a objeto java?

He estado buscando alrededor de ejemplos relacionados con la conversión de cadenas JSON a objeto Java, pero no han encontrado ningún buen ejemplo. El que encontré fue realmente básico una vez y realmente no se trata de complejas cadenas JSON.

Estoy haciendo una aplicación para traducir cadenas de inglés a diferentes idiomas utilizando google translate api. La respuesta de Google en la consulta es … el texto de foolowing se da formato en JSON,

{"data":{"translations":[{"translatedText":"Bonjour tout le monde"}]}} 

Mi enfoque hasta ahora está utilizando GSON API, sin embargo, estoy atrapado por la realidad ¿cómo debo manipular este resultado complicado y crear objeto java?

Mi clase de java es …

 import com.google.gson.Gson; public class JSONConverter { private String traslatedText; /** * Create an object of it self by manipulating json string * @param json type: String * @return String Translated text result from JSON responce */ public String getTranslation(String json){ Gson gson = new Gson(); JSONConverter obj = gson.fromJson(json, JSONConverter.class); return obj.getTranslationForReturn(); } /** * Method return a translation to a private call * @return String translation */ private String getTranslationForReturn(){ return this.traslatedText; } } 

Por encima del enfoque no funciona ya que no estoy recibiendo "Bonjour tout le monde" a su regreso,

Sería un gran placer si alguien pudiera ampliar mi comprensión.

EDIT: Usted necesita su clase de datos java para ser un modelo exacto de la JSON. Entonces tus

 {"data":{"translations":[{"translatedText":"Bonjour tout le monde"}]}} 

Se convierte en:

 class DataWrapper { public Data data; public static DataWrapper fromJson(String s) { return new Gson().fromJson(s, DataWrapper.class); } public String toString() { return new Gson().toJson(this); } } class Data { public List<Translation> translations; } class Translation { public String translatedText; } 

A medida que el modelo de objeto se vuelve más complicado, el código de estilo org.json cambia a ilegible mientras que la asignación de objetos estilo gson / jackson sigue siendo simplemente objetos java.

Normalmente me gusta usar la biblioteca org.json simple

Utilícelo como:

  // make sure the quotes are escaped String str = "{\"data\":{\"translations\":[{\"translatedText\":\"Bonjour tout le monde\"}]}}"; // the object data is inside a "global" JSONObject data = new JSONObject(str).getJSONObject("data"); // get a JSONArray from inside an object JSONArray translations = data.getJSONArray("translations"); // get the first JSONObject from the array JSONObject text = translations.getJSONObject(0); // get the String contained in the object -> logs Bonjour tout le monde Log.d("***>Text", text.getString("translatedText")); 

Tal vez tanto código es menos claro de lo que me hubiera gustado. Esta es la función como yo lo haría:

 public String getTranslation(String json){ JSONObject data = new JSONObject(json).getJSONObject("data"); return data.getJSONArray("translations").getJSONObject(0).getString("translatedText"); } 

Comprobar esto Conversión de JSON a Java , supongo que puede definir una clase como el objeto y pasar que a lo largo. Por lo tanto, crear un poco de clase y pasar a lo largo.

Data obj = gson.fromJson(json, Data.class);

 class Data{ public List<Data> getTranslation(){ return translations; } } 

Prueba algo así. Puede que tenga que experimentar un poco.

  • JSONException: no hay valor para XYZ al intentar getString ("XYZ")
  • Excepción de JsonReader en Android mientras se analizan datos JSON grandes
  • Cómo evaluar expresiones de usuario en un entorno limitado
  • Android - problema de deserialización de json-smart
  • Quiero google play store como scrollview
  • Lectura JSON doble matriz dimensional en Java
  • Cómo analizar este tipo de json String con Gson?
  • Clase de modelo para Jackson Parser para analizar propiedades en mayúsculas
  • Bucle JSONArray de Android
  • Llenar cada fragmento en ViewPager con otro objeto JSON sin cargar de nuevo
  • Cómo recuperar una lista específica de datos de firebase
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.