Nie musisz używać JsonObject
. Powinieneś używać Gson do konwersji do / z ciągów JSON i własnych obiektów Java.
Zobacz podręcznik użytkownika Gson :
(Serializacja)
Gson gson = new Gson();
gson.toJson(1);
gson.toJson("abcd");
gson.toJson(new Long(10));
int[] values = { 1 };
gson.toJson(values);
(Deserializacja)
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
jest reprezentacją pośrednią. W 99% przypadków użycia naprawdę powinieneś przejmować się przedstawieniem danych jako obiektu Java lub jako ciągu znaków zawierającego JSON.Możesz przekonwertować go na JavaBean, jeśli chcesz, używając:
Gson gson = new GsonBuilder().setPrettyPrinting().create(); gson.fromJson(jsonString, JavaBean.class)
Aby użyć JsonObject, który jest bardziej elastyczny, użyj następujących elementów:
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());
Co jest równoważne z następującym:
źródło
JsonObject jo = jsonParser.parse(json).getAsJsonObject();
iAssert.assertTrue(jo.get("Success").getAsBoolean());
Aby zrobić to w prostszy sposób, rozważ poniżej:
JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
źródło
String string = "abcde"; // The String which Need To Be Converted JsonObject convertedObject = new Gson().fromJson(string, JsonObject.class);
Robię to i zadziałało.
źródło
Wygląda na to, że powyższa odpowiedź nie odpowiedziała całkowicie na pytanie.
Myślę, że szukasz czegoś takiego jak poniżej:
class TransactionResponse { String Success, Message; List<Response> Response; } TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);
gdzie moja odpowiedź brzmi mniej więcej tak:
{"Success":false,"Message":"Invalid access token.","Response":null}
Jak widać, nazwa zmiennej powinna być taka sama, jak reprezentacja ciągu Json klucza w parze klucz-wartość. Spowoduje to automatyczną konwersję ciągu gson do JsonObject.
źródło
@SerializedName("Success")
na przykład.String emailData = {"to": "[email protected]","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);
źródło
Gson gson = new Gson(); YourClass yourClassObject = new YourClass(); String jsonString = gson.toJson(yourClassObject);
źródło
JsonObject jsonObject = (JsonObject) new JsonParser().parse("YourJsonString");
źródło
Zwróć uwagę, że od wersji Gson 2.8.6 metoda wystąpienia
JsonParser.parse
została wycofana i zastąpiona metodą statycznąJsonParser.parseString
:źródło