Dalam proyek Java Maven, bagaimana Anda menghasilkan file sumber java dari JSON? Misalnya kita punya
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York"
}
}
Ketika kami menjalankan, mvn generate-sources
kami ingin menghasilkan sesuatu seperti ini:
class Address {
JSONObject mInternalJSONObject;
Address (JSONObject json){
mInternalJSONObject = json;
}
String getStreetAddress () {
return mInternalJSONObject.getString("streetAddress");
}
String getCity (){
return mInternalJSONObject.getString("city");
}
}
class Person {
JSONObject mInternalJSONObject;
Person (JSONObject json){
mInternalJSONObject = json;
}
String getFirstName () {
return mInternalJSONObject.getString("firstName");
}
String getLastName (){
return mInternalJSONObject.getString("lastName");
}
Address getAddress (){
return Address(mInternalJSONObject.getString("address"));
}
}
Sebagai pengembang Java, baris XML apa yang harus saya tulis pom.xml
untuk membuat ini terjadi?
Jawaban:
Coba plug-in jsonschema2pojo :
Yang
<sourceType>json</sourceType>
mencakup kasus di mana sumbernya adalah json (seperti OP). Jika Anda memiliki skema json yang sebenarnya , hapus baris ini.Diperbarui pada tahun 2020. Dua hal telah terjadi sejak Dec '09 ketika pertanyaan ini diajukan:
The JSON Skema spek telah pindah banyak. Ini masih dalam konsep (tidak difinalisasi) tetapi hampir selesai dan sekarang merupakan alat yang layak menentukan aturan struktural Anda
Saya baru-baru ini memulai proyek open source baru yang khusus ditujukan untuk menyelesaikan masalah Anda: jsonschema2pojo . Alat jsonschema2pojo mengambil dokumen skema json dan menghasilkan kelas Java gaya-DTO (dalam bentuk file sumber .java). Proyek ini belum matang tetapi sudah menyediakan cakupan bagian yang paling berguna dari skema json. Saya mencari lebih banyak umpan balik dari pengguna untuk membantu mendorong pengembangan. Saat ini Anda dapat menggunakan alat dari baris perintah atau sebagai plugin Maven.
Semoga ini membantu!
sumber
Jika Anda menggunakan Jackson (perpustakaan paling populer di sana), cobalah
https://github.com/astav/JsonToJava
Sumber terbuka dan siapa pun harus dapat berkontribusi.
Ringkasan
Generator file kelas sumber JsonToJava yang menyimpulkan skema berdasarkan data sampel json yang disediakan dan menghasilkan struktur data java yang diperlukan.
Ini mendorong tim untuk berpikir dalam Json terlebih dahulu, sebelum menulis kode aktual.
fitur
sumber
Berikut adalah alat online yang akan mengambil JSON, termasuk objek bersarang atau array objek bersarang dan menghasilkan sumber Java dengan anotasi Jackson.
sumber
Menjawab pertanyaan lama ini dengan proyek terbaru ;-).
Saat ini solusi terbaik mungkin adalah JsonSchema2Pojo :
Itu pekerjaan dari Json Skema yang jarang digunakan tetapi juga dengan Json polos. Ini menyediakan Ant dan Maven plugin dan aplikasi tes online dapat memberi Anda gambaran tentang alat ini. Saya menaruh Json Tweet dan menghasilkan semua kelas yang berisi (Tweet, Pengguna, Lokasi, dll.).
Kami akan menggunakannya pada proyek Agorava untuk menghasilkan pemetaan Media Sosial dan mengikuti evolusi kontan dalam API mereka.
sumber
Terima kasih semua yang berusaha membantu.
Bagi saya skrip ini sangat membantu. Ini hanya memproses JSON datar dan tidak mengurusi jenis, tetapi mengotomatisasi beberapa rutin
sumber
Saya sadar ini adalah pertanyaan lama, tetapi saya menemukan jawabannya ketika mencoba menemukan jawaban sendiri.
Jawaban yang menyebutkan generator json-pojo online (jsongen) bagus, tapi saya butuh sesuatu yang bisa saya jalankan di baris perintah dan lebih banyak tweak.
Jadi saya menulis skrip ruby yang sangat pekat untuk mengambil sampel file JSON dan menghasilkan POJO dari itu. Ini memiliki sejumlah keterbatasan (misalnya, tidak berurusan dengan bidang yang cocok dengan kata kunci yang dilindungi undang-undang java) tetapi cukup untuk banyak kasus.
Kode yang dibuat, secara default, membuat catatan untuk digunakan dengan Jackson, tetapi ini dapat dimatikan dengan sakelar.
Anda dapat menemukan kode di github: https://github.com/wotifgroup/json2pojo
sumber
Sejauh yang saya tahu tidak ada alat seperti itu. Namun.
Alasan utamanya adalah, saya curiga, bahwa tidak seperti dengan XML (yang memiliki XML Schema, dan kemudian alat-alat seperti 'xjc' untuk melakukan apa yang Anda minta, antara definisi XML dan POJO), tidak ada fitur bahasa skema lengkap. Ada JSON Schema, tetapi memiliki sedikit dukungan untuk definisi tipe aktual (berfokus pada struktur JSON), sehingga akan sulit untuk menghasilkan kelas Java. Tapi mungkin masih mungkin, esp. jika beberapa konvensi penamaan didefinisikan dan digunakan untuk mendukung generasi.
Namun: ini adalah sesuatu yang telah cukup sering diminta (pada milis proyek alat JSON yang saya ikuti), jadi saya pikir seseorang akan menulis alat semacam itu dalam waktu dekat.
Jadi saya tidak berpikir itu adalah ide yang buruk per se (juga: itu bukan ide yang baik untuk semua kasus penggunaan, tergantung pada apa yang ingin Anda lakukan).
sumber
Saya memiliki masalah yang sama sehingga saya memutuskan untuk mulai menulis alat kecil untuk membantu saya dengan ini. Saya akan berbagi dan membuka sumbernya.
https://github.com/BrunoAlexandreMendesMartins/CleverModels
Ini mendukung, JAVA, C # & Objective-c dari JSON.
Silakan berkontribusi!
sumber
Anda juga dapat mencoba perpustakaan GSON. Yang cukup kuat itu dapat membuat JSON dari koleksi, objek dan karya kustom juga sebaliknya. Ini dirilis di bawah Apache License 2.0 sehingga Anda dapat menggunakannya juga secara komersial.
http://code.google.com/p/google-gson/
sumber
Saya membuat proyek github Json2Java yang melakukan ini. https://github.com/inder123/json2java
Json2Java menyediakan penyesuaian seperti mengubah nama bidang, dan membuat hierarki warisan.
Saya telah menggunakan alat ini untuk membuat beberapa API yang relatif kompleks:
API TMS Gracenote: https://github.com/inder123/gracenote-java-api
Google Maps Geocoding API: https://github.com/inder123/geocoding
sumber
Untuk menambahkan ke pos @ japher. Jika Anda tidak terikat dengan JSON, Protokol Buffer layak untuk dicoba.
sumber
Coba solusi saya
http://htmlpreview.github.io/?https://raw.githubusercontent.com/foobnix/android-universal-utils/master/json/generator.html
Hasil Kelas Java
Dapatkan JSONObject
Masukkan JSONObject
sumber
Biarkan saya menunjukkan kepada Anda bagaimana untuk mengembangkan alat ini. Anda dapat melakukannya:
Saya dev alat memecahkan masalah. Itu desain yang baik dan lebih cepat. dapatkan kode dari github saya .
selamat menikmati dari sini, saya telah menyebarkannya di server web .
Saya mencoba saran atas 2 jawaban. Satu web tidak dapat membuka. Satu lebih lambat dari alat saya. Harap Anda akan menikmati alat saya.
sumber