Вам не нужно использовать JsonObject
. Вы должны использовать Gson для преобразования в / из строк JSON и ваших собственных объектов Java.
См. Руководство пользователя Gson :
(Сериализация)
Gson gson = new Gson();
gson.toJson(1);
gson.toJson("abcd");
gson.toJson(new Long(10));
int[] values = { 1 };
gson.toJson(values);
(Десериализация)
int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String anotherStr = gson.fromJson("[\"abc\"]", String.class)
JsonObject
является промежуточным представлением. В 99% случаев вам действительно следует заботиться только о представлении ваших данных в виде объекта Java или строки, содержащей JSON.Вы можете преобразовать его в JavaBean, если хотите использовать:
Gson gson = new GsonBuilder().setPrettyPrinting().create(); gson.fromJson(jsonString, JavaBean.class)
Чтобы использовать JsonObject, который является более гибким, используйте следующее:
String json = "{\"Success\":true,\"Message\":\"Invalid access token.\"}"; JsonParser jsonParser = new JsonParser(); JsonObject jo = (JsonObject)jsonParser.parse(json); Assert.assertNotNull(jo); Assert.assertTrue(jo.get("Success").getAsString());
Что эквивалентно следующему:
источник
JsonObject jo = jsonParser.parse(json).getAsJsonObject();
andAssert.assertTrue(jo.get("Success").getAsBoolean());
Чтобы сделать это проще, рассмотрим ниже:
JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
источник
String string = "abcde"; // The String which Need To Be Converted JsonObject convertedObject = new Gson().fromJson(string, JsonObject.class);
Я так делаю, и это сработало.
источник
Похоже, что приведенный выше ответ не дал полного ответа на вопрос.
Я думаю, вы ищете что-то вроде ниже:
class TransactionResponse { String Success, Message; List<Response> Response; } TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);
где мой ответ примерно такой:
{"Success":false,"Message":"Invalid access token.","Response":null}
Как видите, имя переменной должно совпадать со строковым представлением Json ключа в паре «ключ-значение». Это автоматически преобразует вашу строку gson в JsonObject.
источник
@SerializedName("Success")
например, вместо него.String emailData = {"to": "abc@abctest.com","subject":"User details","body": "The user has completed his training" } // Java model class public class EmailData { public String to; public String subject; public String body; } //Final Data Gson gson = new Gson(); EmailData emaildata = gson.fromJson(emailData, EmailData.class);
источник
Gson gson = new Gson(); YourClass yourClassObject = new YourClass(); String jsonString = gson.toJson(yourClassObject);
источник
JsonObject jsonObject = (JsonObject) new JsonParser().parse("YourJsonString");
источник
Обратите внимание, что в Gson 2.8.6 метод экземпляра
JsonParser.parse
устарел и заменен статическим методомJsonParser.parseString
:источник