Anda tidak perlu menggunakan JsonObject
. Anda harus menggunakan Gson untuk mengonversi ke / dari string JSON dan objek Java Anda sendiri.
Lihat Panduan Pengguna Gson :
(Serialisasi)
Gson gson = new Gson();
gson.toJson(1);
gson.toJson("abcd");
gson.toJson(new Long(10));
int[] values = { 1 };
gson.toJson(values);
(Deserialization)
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
adalah representasi perantara. Dalam 99% kasus penggunaan, Anda harus benar-benar hanya peduli tentang merepresentasikan data Anda sebagai objek Java, atau sebagai string yang berisi JSON.Anda bisa mengubahnya menjadi JavaBean jika Anda ingin menggunakan:
Gson gson = new GsonBuilder().setPrettyPrinting().create(); gson.fromJson(jsonString, JavaBean.class)
Untuk menggunakan JsonObject, yang lebih fleksibel, gunakan yang berikut ini:
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());
Yang mana setara dengan berikut ini:
sumber
JsonObject jo = jsonParser.parse(json).getAsJsonObject();
danAssert.assertTrue(jo.get("Success").getAsBoolean());
Untuk melakukannya dengan cara yang lebih sederhana, pertimbangkan di bawah ini:
JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();
sumber
String string = "abcde"; // The String which Need To Be Converted JsonObject convertedObject = new Gson().fromJson(string, JsonObject.class);
Saya melakukan ini, dan berhasil.
sumber
Sepertinya jawaban di atas tidak menjawab pertanyaan dengan lengkap.
Saya pikir Anda mencari sesuatu seperti di bawah ini:
class TransactionResponse { String Success, Message; List<Response> Response; } TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);
di mana tanggapan saya kira-kira seperti ini:
{"Success":false,"Message":"Invalid access token.","Response":null}
Seperti yang Anda lihat, nama variabel harus sama dengan representasi string Json dari kunci dalam pasangan nilai kunci. Ini secara otomatis akan mengubah string gson Anda menjadi JsonObject.
sumber
@SerializedName("Success")
sebagai gantinya.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);
sumber
Gson gson = new Gson(); YourClass yourClassObject = new YourClass(); String jsonString = gson.toJson(yourClassObject);
sumber
JsonObject jsonObject = (JsonObject) new JsonParser().parse("YourJsonString");
sumber
Perhatikan bahwa mulai Gson 2.8.6 , metode instance
JsonParser.parse
sudah tidak digunakan lagi dan diganti dengan metode statisJsonParser.parseString
:sumber