Sepertinya tidak bisa memahaminya. Saya mencoba manipulasi pohon JSON di GSON, tetapi saya memiliki kasus di mana saya tidak tahu atau memiliki POJO untuk mengubah string menjadi, sebelum mengkonversi JsonObject
. Apakah ada cara untuk langsung dari satu String
ke yang lain JsonObject
?
Saya sudah mencoba yang berikut (sintaks Scala):
val gson = (new GsonBuilder).create
val a: JsonObject = gson.toJsonTree("""{ "a": "A", "b": true }""").getAsJsonObject
val b: JsonObject = gson.fromJson("""{ "a": "A", "b": true }""", classOf[JsonObject])
tetapi a
gagal, JSON melarikan diri dan diuraikan sebagai satu- JsonString
satunya, dan
b
mengembalikan yang kosong JsonObject
.
Ada ide?
Jawaban:
gunakan JsonParser; sebagai contoh:
sumber
new JsonParser().parse(..).getAsJsonObject();
JsonParser.parseString(str).getAsJsonObject()
.Cobalah untuk menggunakan
getAsJsonObject()
alih-alih gips lurus yang digunakan dalam jawaban yang diterima:sumber
members
kunci induk. Berikut adalah contoh {"anggota": {"key1": "13756963814f2c594822982c0307fb81", "key2": true, "key3": 123456789}}JsonObject jsonObj = JsonParser.parseString(str).getAsJsonObject()
atauGson gson = new Gson(); JsonElement element = gson.fromJson (jsonStr, JsonElement.class); JsonObject jsonObj = element.getAsJsonObject();
sumber
JsonObject
definisi kelas? Itu berasal dari perpustakaan Google Gson. Anda dapat merujuk dokumentasi di sini .Cara paling sederhana adalah dengan menggunakan
JsonPrimitive
kelas, yang berasal dariJsonElement
, seperti yang ditunjukkan di bawah ini:sumber
Baru saja menemui masalah yang sama. Anda dapat menulis deserializer khusus sepele untuk
JsonElement
kelas:sumber
Saya percaya ini adalah pendekatan yang lebih mudah:
Dan Anda akan dapat menyebutnya seperti ini:
Dengan cara ini semua objek hibernasi akan dikonversi secara otomatis.
sumber
The
JsonParser
konstruktor telah usang. Gunakan metode statis sebagai gantinya:sumber
Datang di skenario dengan penyortiran jauh menyimpan data di EXTJS 4.X di mana string dikirim ke server sebagai array JSON (hanya 1 objek).
Pendekatan serupa dengan apa yang disajikan sebelumnya untuk string sederhana, hanya perlu konversi ke JsonArray terlebih dahulu sebelum JsonObject.
String dari klien: [{"property": "COLUMN_NAME", "direction": "ASC"}]
sumber
sumber