Ini adalah halaman beranda dari proyek Jackson.
(Catatan: Untuk info rilis terkini, lihat rilis Jackson)
Jackson telah dikenal sebagai "Perpustakaan Java Json" atau "Parser JSON terbaik untuk Java". Atau hanya sebagai "JSON untuk Java".
More than that, Jackson is a suite of data-processing tools for Java (and the JVM platform), including the flagship streaming JSON parser / generator library, matching data-binding library (POJOs to and from JSON) and additional data format modules to process data encoded in Avro, BSON, CBOR, CSV, Smile, (Java) Properties, Protobuf, TOML, XML or YAML; dan bahkan serangkaian besar modul format data untuk mendukung tipe data dari tipe data yang banyak digunakan seperti jambu, joda, pcollections dan banyak lagi (lihat di bawah).
Sementara komponen inti yang sebenarnya hidup di bawah proyek mereka sendiri - termasuk tiga paket inti (streaming, databind, anotasi); pustaka format data; pustaka tipe data; Penyedia JAX-RS; dan serangkaian modul ekstensi lainnya - proyek ini bertindak sebagai pusat pusat untuk menghubungkan semua bagian bersama -sama.
Sahabat yang baik untuk readme ini adalah FAQ Proyek Jackson.
Jackson Suite memiliki dua versi utama: 1.x sudah usang dan tidak ada versi yang dirilis; 2.x adalah versi yang dikembangkan secara aktif. Dua versi utama ini menggunakan paket Java yang berbeda dan ID artefak Maven, sehingga tidak saling kompatibel, tetapi dapat hidup berdampingan secara damai: sebuah proyek dapat bergantung pada Jackson 1.x dan 2.x, tanpa konflik. Ini adalah dengan desain dan dipilih sebagai strategi untuk memungkinkan migrasi yang lebih halus dari 1.x ke 2.x.
Versi stabil terbaru dari cabang -cabang ini adalah:
Cara yang disarankan untuk menggunakan Jackson adalah melalui repositori Maven; Rilis dilakukan ke Central Maven Repository (CMR). Halaman wiki masing -masing proyek terkadang juga berisi tautan unduhan langsung, menunjuk ke CMR.
Catatan rilis untuk rilis 2.x ditemukan dari halaman rilis Jackson.
Sebagian besar proyek yang tercantum di bawah ini dipimpin oleh tim pengembangan Jackson; Tetapi beberapa oleh anggota komunitas Jackson lainnya. Kami mencoba menjaga versi modul yang kompatibel untuk mengurangi kebingungan mengenai versi mana yang bekerja bersama.
Modul inti adalah fondasi di mana ekstensi (modul) dibangun. Ada 3 modul seperti itu saat ini (pada Jackson 2.x):
streaming ; itu tergantung pada paket streaming dan annotations Ekstensi ini adalah Module Jackson plug-in (terdaftar dengan ObjectMapper.registerModule() ), dan menambahkan dukungan untuk data dari berbagai perpustakaan Java yang umum digunakan, dengan menambahkan serial dan deserializer sehingga paket databind Jackson ( ObjectMapper / ObjectReader / ObjectWriter ) dapat membaca dan menulis jenis ini.
Modul DataType yang dikelola langsung oleh tim Jackson berada di bawah repositori GitHub berikut:
jackson-module-parameter-names : Modul yang menambahkan dukungan untuk menggunakan fitur JDK8 baru, kemampuan untuk mengakses nama parameter konstruktor dan metode, untuk memungkinkan menghilangkan @JsonProperty .jackson-datatype-jsr310 : Dukungan untuk "Java 8 Tanggal" (yang ditambahkan dalam JDK 8)jackson-datatype-jdk8 : Dukungan untuk JDK 8 Jenis Data selain Jenis Tanggal/Waktu, termasuk OptionalMoney , CurrencyUnit )javax.json ) dan "baru" ( jakarta.json ):jakarta.json ( ditambahkan dalam Jackson 2.12.2 )javax.jsonJSONObject , JSONArraySelain itu, kami mengetahui modul tambahan yang tidak dikelola secara langsung oleh tim Core Jackson:
jackson-dataformat-protobuf yang menambah dukungan untuk pengkodean/decoding protobuf konten tetapi yang tidak bergantung pada Perpustakaan Protobu Java Standarcom.github.caligin.tinytypes , artefak tinytypes-jackson )org.vertx.java.core.json.JsonObject Objects (Tipe Node org.json yang dikemas ulang) Penyedia JACKSON JAX-RS memiliki penangan untuk menambahkan dukungan data format untuk implementasi JAX-RS (seperti Jersey, Resteasy, CXF). Penyedia mengimplementasikan MessageBodyReader dan MessageBodyWriter . Format yang didukung saat ini termasuk JSON , Smile , XML , YAML dan CBOR .
Modul format data menawarkan dukungan untuk format data selain JSON. Sebagian besar dari mereka hanya menerapkan streaming abstraksi API, sehingga komponen basis data dapat digunakan sebagaimana adanya; Beberapa menawarkan (dan beberapa membutuhkan) fungsionalitas tingkat databind tambahan untuk menangani hal -hal seperti skema.
Saat ini modul format data berikut sepenuhnya dapat digunakan dan didukung (nomor versi dalam tanda kurung, jika disertakan, adalah versi Jackson 2.x pertama yang memasukkan modul; jika hilang, termasuk dari 2.0)
streaming ditambah dukungan tingkat databind tambahan untuk skema AVROstreaming API, dengan penambahan databind kenyamanan opsionalAvrostreaming API, tidak ada perubahan untuk databindstreaming dan databindstreaming dan databind . Mirip dengan mode JAXB "Code-First" (tidak ada dukungan untuk "XML Schema First", tetapi dapat menggunakan JAXB Beans)streaming sederhanaAda juga modul format data lainnya, yang disediakan oleh pengembang di luar tim Jackson Core:
MsgPack )Jackson Annotations mendefinisikan properti yang dimaksud dan penanganan yang diharapkan untuk POJOS, dan selain Jackson sendiri menggunakan ini untuk membaca/menulis JSON dan format lainnya, ini juga memungkinkan pembuatan skema eksternal. Beberapa fungsi ini termasuk dalam ekstensi format data yang disebutkan di atas; Tetapi ada juga banyak alat skema yang berdiri sendiri, seperti:
Modul lain yang sepenuhnya dapat digunakan oleh tim FasterXML meliputi:
@JacksonInject (atau sebagai tambahan)JAXB sebagai alternatif (selain atau bukannya) Anotasi Jackson Standar@JacksonInject@JsonProperty .Sementara Jackson Databind adalah pilihan yang baik untuk pengikatan data tujuan umum, jejak kaki dan overhead startup mungkin bermasalah di beberapa domain, seperti ponsel; dan terutama untuk penggunaan cahaya (beberapa bacaan atau menulis). Selain itu, beberapa pengembang menemukan API Jackson penuh yang luar biasa.
Untuk semua alasan ini, kami memutuskan untuk membuat perpustakaan yang lebih sederhana dan lebih kecil, yang mendukung subset fungsionalitas, yang disebut Jackson JR. Ini dibangun di Jackson Streaming API, tetapi tidak bergantung pada databind. Akibatnya ukurannya (kedua guci, dan penggunaan memori runtime) jauh lebih kecil; Dan API -nya sangat kompak.
Jika Anda ingin membantu proyek Jackson, silakan periksa Kontribusi.
Anda mungkin juga ingin memeriksa:
Komponen Jackson didukung oleh komunitas Jackson melalui milis, forum gitter, masalah github. Lihat berkontribusi untuk detail lengkap.
Selain dukungan masyarakat gratis (untuk semua), dukungan perusahaan - dimulai dengan versi 2.10 - tersedia sebagai bagian dari langganan tidelift untuk (sebagian besar) komponen Jackson.
Pemelihara Jackson dan ribuan paket lainnya bekerja dengan Tidelift untuk memberikan dukungan komersial dan pemeliharaan untuk dependensi open source yang Anda gunakan untuk membangun aplikasi Anda. Hemat waktu, kurangi risiko, dan tingkatkan kesehatan kode, sambil membayar pemelihara dari ketergantungan yang tepat yang Anda gunakan. Pelajari lebih lanjut.
Mekanisme yang disarankan untuk melaporkan kemungkinan kerentanan keamanan mengikuti apa yang disebut "rencana pengungkapan terkoordinasi" (lihat definisi DCP untuk ide umum). Langkah pertama adalah mengajukan kontak keamanan tidelift: Tidelift akan merutekan semua laporan melalui sistem mereka ke pemeliharaan paket yang relevan, dan memulai proses yang akan mengevaluasi kekhawatiran dan mengeluarkan kemungkinan perbaikan, mengirim pemberitahuan pembaruan dan sebagainya. Perhatikan bahwa Anda tidak perlu menjadi pelanggan Tidelift untuk mengajukan kontak keamanan.
Atau Anda juga dapat melaporkan kemungkinan kerentanan untuk info di alamat surat FasterXML dot com. Perhatikan bahwa mengajukan masalah untuk dilakukan dengan laporan baik -baik saja, tetapi jika Anda melakukannya, jangan sertakan rincian masalah keamanan dalam masalah ini tetapi hanya dalam kontak email. Ini penting untuk memberi kami waktu untuk memberikan tambalan, jika perlu, untuk masalahnya.
Bug Jackson perlu dilaporkan terhadap komponen yang mereka mempengaruhi: karena alasan ini, pelacak masalah tidak diaktifkan untuk proyek ini. Jika Anda tidak yakin masalah proyek spesifik mana yang mempengaruhi, komponen yang paling mungkin adalah jackson-databind , jadi Anda akan menggunakan Jackson Databind Issue Tracker.
Untuk saran dan ide -ide baru, cobalah Ide Jackson Future
Untuk pengguna pertama kali ada banyak tutorial penggunaan Jackson yang bagus, termasuk Tutorial Penggunaan Umum / JSON:
dan tutorial yang lebih spesifik:
Laporan berikut telah diterbitkan tentang komponen Jackson
Karena Anda mungkin menginginkan pendapat oleh pengembang Java yang tidak terkait dengan proyek Jackson, mengenai perpustakaan mana yang akan digunakan, berikut adalah tautan ke beberapa perbandingan independen yang ada: