Преобразование json-строки в объект java?

Я искал примеры, связанные с преобразованием строк JSON в объект Java, но не нашел хороших примеров. Тот, который я нашел, был действительно один раз и не имел дело со сложными строками JSON.

Я делаю приложение для перевода строк с английского на разные языки, используя google translate api. Ответ Google по запросу – это … foolowing text отформатирован в JSON,

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

Мой подход до сих пор использует API GSON, однако, я застрял на самом деле, как я должен манипулировать этим сложным результатом и создать объект Java?

Мой класс java – это …

 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; } } 

Вышеуказанный подход не работает, так как я не получаю «Bonjour tout le monde» по возвращении,

Было бы очень приятно, если кто-то сможет расширить мое понимание.

Solutions Collecting From Web of "Преобразование json-строки в объект java?"

EDIT: вам нужен ваш класс данных Java, чтобы быть точной моделью JSON. Так что ваши

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

будет выглядеть так:

 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; } 

По мере усложнения объектной модели код стиля org.json поворачивается к нечитаемому, тогда как сопоставление объектов стиля gson / jackson по-прежнему остается просто объектами Java.

Мне обычно нравится использовать обычную библиотеку org.json

Используйте его как:

  // 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")); 

Может быть, так много кода менее понятно, чем хотелось бы. Это функция, как я бы это сделал:

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

Проверьте это Преобразование JSON в Java , я думаю, вы можете определить класс как объект и передать его. Итак, создайте класс и передайте его.

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

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

Попробуйте что-нибудь подобное. Возможно, вам придется немного поэкспериментировать.