Ini mungkin pertanyaan bodoh, tetapi apa cara paling sederhana untuk membaca dan mem-parsing JSON dari URL di Jawa ?
Dalam Groovy, ini masalah beberapa baris kode. Contoh Java yang saya temukan sangat panjang (dan memiliki blok penanganan pengecualian yang sangat besar).
Yang ingin saya lakukan adalah membaca isi tautan ini .
json_decode(file_get_contents($url));
dan selesai!Jawaban:
Menggunakan artefak Maven
org.json:json
saya mendapat kode berikut, yang menurut saya cukup singkat. Tidak sesingkat mungkin, tetapi masih bisa digunakan.sumber
readLine
fungsi akan melakukan loop kemudian, dan saya harus menggabungkan garis-garis bukan karakter, yang lebih mahal. Itu tidak akan membuat kode sesingkat sekarang. Selanjutnya, dalam notasi JSON tidak ada konsep "garis", jadi mengapa saya harus membacanya seperti itu?IOUtils.toString(InputStream)
metode Apache commons-io . Itu akan menyelamatkan Anda dari beberapa jalur dan tanggung jawab.InputStream
. Meskipun kode di atas mungkin singkat untukorg.json
digunakan, pastikan untuk memverifikasi lib lain yang tersedia - tidak perlu menulis lebih dari 1-3 baris kode untuk tugas ini.Berikut adalah beberapa versi alternatif dengan Jackson (karena ada lebih dari satu cara Anda mungkin menginginkan data):
Dan khususnya kasus biasa (IMO) di mana Anda ingin berurusan dengan objek Java, dapat dibuat satu liner:
Lib lainnya seperti Gson juga mendukung metode satu baris; mengapa banyak contoh menunjukkan bagian yang jauh lebih lama aneh. Dan yang lebih buruk lagi adalah bahwa banyak contoh menggunakan pustaka org.json yang sudah usang; ini mungkin yang pertama, tetapi ada setengah lusin alternatif yang lebih baik sehingga sangat sedikit alasan untuk menggunakannya.
sumber
java.net.URL
tapi salah satu karya, serta banyak sumber-sumber lain (File
,InputStream
,Reader
,String
).String
akan membutuhkan konten menjadi JSON, dan bukan pengkodean URI / URL yang harus digunakan.Cara termudah: Gunakan gson, pustaka goto json milik google. https://code.google.com/p/google-gson/
Berikut ini contohnya. Saya akan mengunjungi situs web geolocator gratis ini dan mem-parsing json dan menampilkan kode pos saya. (cukup masukkan barang-barang ini di metode utama untuk mengujinya)
sumber
rootobj.get("zip_code").getAsString();
Jika Anda tidak keberatan menggunakan beberapa pustaka, itu bisa dilakukan dalam satu baris.
Sertakan perpustakaan Apache Commons IOUtils & json.org .
sumber
Gunakan HttpClient untuk mengambil konten URL. Dan kemudian gunakan perpustakaan dari json.org untuk mengurai JSON. Saya telah menggunakan dua perpustakaan ini di banyak proyek dan mereka kuat dan mudah digunakan.
Selain itu Anda dapat mencoba menggunakan perpustakaan java API Facebook. Saya tidak punya pengalaman di bidang ini, tetapi ada pertanyaan tentang stack overflow yang terkait dengan penggunaan Facebook API di java . Anda mungkin ingin melihat RestFB sebagai pilihan yang baik untuk digunakan oleh perpustakaan.
sumber
Saya telah melakukan parser json dengan cara paling sederhana, ini dia
kelas ini mengembalikan objek json dari url
dan ketika Anda ingin objek json, Anda hanya memanggil kelas ini dan metode di kelas aktivitas Anda
kode saya ada di sini
di sini "kunci json" dilambangkan sebagai kunci dalam file json Anda
ini adalah contoh file json sederhana
Di sini "json" adalah kunci dan "hai" adalah nilai
Ini akan mendapatkan nilai json Anda ke konten string.
sumber
Sangat mudah, menggunakan jersey-client, cukup masukkan dependensi pakar ini:
Kemudian panggil menggunakan contoh ini:
Kemudian gunakan Google Gson untuk mengurai JSON:
sumber
Saya telah menemukan ini sebagai cara termudah sejauh ini.
Gunakan metode ini:
Dan gunakan seperti ini:
sumber
Saya tidak yakin apakah ini efisien, tetapi ini adalah salah satu cara yang mungkin:
Baca json dari penggunaan url
url.openStream()
dan baca konten menjadi string.buat objek JSON dengan string ini (selengkapnya di json.org )
sumber
Saya ingin menambahkan jawaban yang diperbarui di sini karena (agak) pembaruan terbaru untuk JDK telah membuatnya sedikit lebih mudah untuk membaca konten URL HTTP. Seperti yang dikatakan orang lain, Anda masih perlu menggunakan pustaka JSON untuk melakukan parsing, karena JDK saat ini tidak mengandung parsing. Berikut adalah beberapa pustaka JSON yang paling umum digunakan untuk Java:
Untuk mengambil JSON dari URL, ini tampaknya menjadi cara paling sederhana menggunakan kelas ketat JDK (tapi mungkin bukan sesuatu yang ingin Anda lakukan untuk muatan besar), Java 9 memperkenalkan: https://docs.oracle.com/en/ java / javase / 11 / docs / api / java.base / java / io / InputStream.html # readAllBytes ()
Untuk mengurai JSON menggunakan perpustakaan GSON, misalnya
sumber
Berikut ini contoh lengkap cara mem-parsing konten Json. Contohnya mengambil statistik versi Android (ditemukan dari kode sumber Android Studio di sini , yang terhubung ke sini ).
Salin file "distributions.json" yang Anda dapatkan dari sana ke res / raw, sebagai cadangan.
build.gradle
nyata
MainActivity.kt
Sebagai alternatif dari ketergantungan, Anda juga dapat menggunakan ini sebagai gantinya:
dan mundur:
Hasil menjalankan ini:
sumber