Jackson และ Gson เป็นแพคเกจ Java JSON ที่สมบูรณ์แบบที่สุดเกี่ยวกับการสนับสนุนการเชื่อมโยงข้อมูลจริง แพคเกจอื่น ๆ อีกมากมายให้เฉพาะการผูกแผนที่ / รายการ (หรือโมเดลต้นไม้ที่เทียบเท่า) ทั้งสองประเภทมีการรองรับประเภททั่วไปอย่างสมบูรณ์รวมถึงความสามารถในการกำหนดค่าที่เพียงพอสำหรับกรณีการใช้งานทั่วไปจำนวนมาก
เนื่องจากฉันคุ้นเคยกับแจ็กสันมากขึ้นนี่คือแง่มุมที่ฉันคิดว่าแจ็คสันมีการสนับสนุนที่สมบูรณ์กว่า Gson (ขอโทษถ้าฉันพลาดฟีเจอร์ Gson):
- การสนับสนุนคำอธิบายประกอบอย่างกว้างขวาง รวมถึงการสืบทอดแบบเต็มและการเพิ่มความคิดเห็น "การผสม" ขั้นสูง (เชื่อมโยงคำอธิบายประกอบกับคลาสสำหรับกรณีที่คุณไม่สามารถเพิ่มได้โดยตรง)
- กรณีการสตรีม (เพิ่มขึ้น) การอ่านการเขียนสำหรับกรณีการใช้งานประสิทธิภาพสูงพิเศษ (หรือหน่วยความจำ จำกัด ) สามารถผสมกับการผูกข้อมูล (ผูกต้นไม้ย่อย) - แก้ไข : Gson รุ่นล่าสุดยังมีเครื่องอ่านสตรีม
- ทรีโมเดล (เข้าถึง DOM- เหมือน); สามารถแปลงระหว่างรุ่นต่างๆ (ต้นไม้ <-> สตรีมวัตถุ Java <->)
- สามารถใช้ตัวสร้างใด ๆ (หรือวิธีการคงที่จากโรงงาน) ไม่เพียง แต่ตัวสร้างเริ่มต้น
- การเข้าถึง Field และ getter / setter (รุ่น gson รุ่นก่อนหน้านี้ใช้เฉพาะฟิลด์ซึ่งอาจมีการเปลี่ยนแปลง)
- รองรับ JAX-RS นอกกรอบ
- การทำงานร่วมกัน: ยังสามารถใช้คำอธิบายประกอบ JAXB, มีการสนับสนุน / การทำงานรอบ ๆ สำหรับแพคเกจทั่วไป (joda, ibatis, cglib), ภาษา JVM (Groovy, Clojure, สกาล่า)
- ความสามารถในการบังคับใช้การจัดการประเภทคงที่ (ประกาศ) สำหรับการส่งออก
- รองรับ deserializing ประเภท polymorphic (Jackson 1.5) - สามารถทำให้เป็นอนุกรมและ deserialize สิ่งต่าง ๆ เช่น List อย่างถูกต้อง (พร้อมกับข้อมูลประเภทเพิ่มเติม)
- การสนับสนุนแบบบูรณาการสำหรับเนื้อหาไบนารี (base64 ถึง / จาก JSON Strings)