Saya ingin mem-parsing data dari JSON yang bertipe String
. Saya menggunakan Google Gson .
Saya sudah:
jsonLine = "
{
"data": {
"translations": [
{
"translatedText": "Hello world"
}
]
}
}
";
dan kelas saya adalah:
public class JsonParsing{
public void parse(String jsonLine) {
// there I would like to get String "Hello world"
}
}
Jawaban:
Ini adalah kode sederhana untuk melakukannya, saya menghindari semua cek tetapi ini adalah ide utama.
Untuk menjadikannya lebih umum - Anda akan menemukan bahwa javadocs Gson cukup jelas dan bermanfaat.
sumber
Dalam aplikasi gson pertama saya, saya menghindari menggunakan kelas tambahan untuk menangkap nilai-nilai terutama karena saya menggunakan json untuk hal-hal konfigurasi
meskipun kurangnya informasi (bahkan halaman gson), itulah yang saya temukan dan gunakan:
mulai dari
Setiap kali gson melihat {}, itu membuat Peta (sebenarnya StringMap gson)
Setiap kali gson melihat '', itu menciptakan sebuah String
Setiap kali gson melihat angka, itu menciptakan Double
Setiap kali gson melihat [], itu menciptakan ArrayList
Anda dapat menggunakan fakta ini (digabungkan) untuk keuntungan Anda
Akhirnya ini adalah kode yang membuatnya
sumber
Hal paling sederhana biasanya adalah membuat hierarki Objek yang cocok, seperti:
dan kemudian mengikat menggunakan GSON, melintasi hierarki objek melalui bidang. Menambahkan getter dan setter tidak ada gunanya untuk wadah data dasar.
Jadi sesuatu seperti:
sumber
Anda bisa membuat kelas java yang sesuai untuk objek json. Nilai integer, string dapat dipetakan apa adanya. Json dapat diurai seperti ini-
Berikut ini adalah contoh- http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html
sumber
Anda bisa menggunakan kelas terpisah untuk mewakili objek JSON dan menggunakan
@SerializedName
anotasi untuk menentukan nama bidang yang akan diambil untuk setiap anggota data:Kemudian Anda bisa melakukan parsing dalam metode parse () Anda menggunakan
Gson
objek:Dengan pendekatan ini, Anda dapat menggunakan kembali
Response
kelas untuk menambahkan bidang tambahan lainnya untuk mengambil anggota data lain yang mungkin ingin Anda ekstrak dari JSON - jika Anda ingin membuat perubahan untuk mendapatkan hasil, misalnya, beberapa terjemahan dalam satu panggilan, atau untuk mendapatkan string tambahan untuk bahasa sumber yang terdeteksi.sumber
Salah satu cara akan dibuat JsonObject dan iterasi melalui parameter. Sebagai contoh
Kemudian Anda dapat mengekstraksi nilai kacang seperti:
Semoga ini membantu.
sumber
Menggunakan Gson untuk Memecahkan
saya akan membuat kelas untuk parameter individu di String json. Atau Anda dapat membuat satu kelas utama yang disebut "Data" dan kemudian membuat kelas-kelas dalam yang sama. Saya membuat kelas terpisah untuk kejelasan.
Kelas adalah sebagai berikut.
Di kelas JsonParsing metode "parse" kita sebut
gson.fromJson(jsonLine, Data.class)
yang akan mengkonversi String di objek java menggunakan Refleksi.Setelah kami memiliki akses ke objek "Data" kami dapat mengakses setiap parameter secara individual.
Tidak mendapat kesempatan untuk menguji kode ini karena saya jauh dari mesin dev saya. Tetapi ini seharusnya membantu.
Beberapa contoh dan artikel bagus.
http://albertattard.blogspot.com/2009/06/practical-example-of-gson.html
http://sites.google.com/site/gson/gson-user-guide
Kode
sumber
private String translatedText
tanpa melanggar kontrol akses, jadi tidakfromJSON
mungkin mengaturnya dalam JVM yang belum memilih-ke refleksi menginjak-injak seluruh kontrol akses.Contoh sederhana untuk mem-parse JSON seperti ini
sumber
Pertama Hasilkan Getter Dan Setter menggunakan situs parsing di bawah ini
http://www.jsonschema2pojo.org/
Sekarang gunakan Gson
Sekarang gunakan objek untuk mendapatkan nilai seperti data, translationText
sumber
Anda bisa menggunakan kueri JsonPath untuk mengekstrak nilainya. Dan dengan JsonSurfer yang didukung oleh Gson, masalah Anda dapat diselesaikan dengan hanya dua baris kode!
sumber
Satu kode baris:
sumber