هذه هي الصفحة الرئيسية لمشروع جاكسون.
(ملاحظة: للاطلاع على معلومات الإصدار الحديثة ، انظر إصدارات جاكسون)
يُعرف جاكسون باسم "مكتبة Java Json" أو "أفضل محلل Json لـ Java". أو ببساطة كـ "JSON for Java".
أكثر من ذلك ، Jackson هو مجموعة من أدوات معالجة البيانات لـ Java (ومنصة JVM) ، بما في ذلك مكتبة Barser / Generator Parerary الرائدة ، ومطابقة مكتبة ربط البيانات (Pojos من وإلى JSON) و Protobust ، Protobust ، Toml ، Toml ، csv ، يامل وحتى المجموعة الكبيرة من وحدات تنسيق البيانات لدعم أنواع البيانات من أنواع البيانات المستخدمة على نطاق واسع مثل الجوافة ، JODA ، PCOLLECTIONS وغيرها الكثير (انظر أدناه).
في حين أن المكونات الأساسية الفعلية تعيش ضمن مشاريعها الخاصة - بما في ذلك الحزم الأساسية الثلاث (البث ، Databind ، التعليقات التوضيحية) ؛ مكتبات تنسيق البيانات ؛ مكتبات نوع البيانات ؛ مزود Jax-RS ؛ ومجموعة متنوعة من وحدات التمديد الأخرى - يعمل هذا المشروع كمحور رئيسي لربط جميع القطع معًا.
رفيق جيد لهذا ReadMe هو الأسئلة الشائعة حول مشروع جاكسون.
لدى Jackson Suite نسختين رئيسيتين: 1.x يتم إهمالها ولا يتم إصدار أي إصدارات ؛ 2.x هي النسخة المطورة بشكل نشط. يستخدم هذان الإصداران الرئيسيان حزم Java المختلفة ومعرفات القطع الأثرية Maven ، لذلك لا تكون متوافقة مع بعضها البعض ، ولكن يمكن أن تتعايش بهدوء: يمكن أن يعتمد المشروع على كل من Jackson 1.x و 2.x ، دون تعارضات. هذا حسب التصميم وتم اختياره كاستراتيجية للسماح بالهجرة الأكثر سلاسة من 1.x إلى 2.x.
أحدث الإصدارات المستقرة من هذه الفروع هي:
الطريقة الموصى بها لاستخدام جاكسون هي من خلال مستودعات Maven ؛ يتم إجراء الإصدارات إلى مستودع Maven المركزي (CMR). تحتوي صفحات ويكي المشاريع الفردية في بعض الأحيان أيضًا على روابط تنزيل مباشرة ، تشير إلى CMR.
تم العثور على ملاحظات الإصدار للإصدارات 2.x من صفحة إصدارات جاكسون.
معظم المشاريع المذكورة أدناه هي قيادة فريق جاكسون للتنمية ؛ لكن البعض من قبل أفراد مجتمع جاكسون الآخرين. نحاول الحفاظ على إصدار الوحدات النمطية المتوافقة لتقليل الارتباك فيما يتعلق بالإصدارات التي تعمل معًا.
الوحدات الأساسية هي الأساس الذي تعتمد عليه الإضافات (الوحدات النمطية). هناك 3 وحدات من هذا القبيل حاليًا (كما في جاكسون 2.x):
streaming ؛ يعتمد ذلك على حزم streaming annotations هذه الامتدادات عبارة عن Module مكونة من جاكسون S (مسجلة مع ObjectMapper.registerModule() ) ، وتضيف دعمًا لأنواع البيانات من مختلف مكتبات Java شائعة الاستخدام ، من خلال إضافة مسلسلات وفضيلة حتى تتمكن حزمة databind ( ObjectMapper / ObjectReader / ObjectWriter ) من قراءة هذه الأنواع.
وحدات نوع البيانات التي يحتفظ بها فريق Jackson مباشرة تخضع لمستودعات GitHub التالية:
jackson-module-parameter-names : الوحدة التي تضيف الدعم لاستخدام ميزة JDK8 جديدة ، والقدرة على الوصول إلى أسماء المعلمات المُنشئ والطريقة ، للسماح بحذف @JsonProperty .jackson-datatype-jsr310 : دعم "Java 8 Dates" (تلك التي تمت إضافتها في JDK 8)jackson-datatype-jdk8 : دعم لأنواع بيانات JDK 8 بخلاف أنواع التاريخ/الوقت ، بما في ذلك OptionalMoney ، CurrencyUnit )javax.json ) و "New" ( jakarta.json ):jakarta.json ( تمت إضافتها في Jackson 2.12.2 )javax.jsonJSONObject ، JSONArrayبالإضافة إلى ذلك ، نحن على دراية بوحدات إضافية لا يتم الحفاظ عليها مباشرة من قبل فريق Core Jackson:
jackson-dataformat-protobuf الذي يضيف دعمًا لترميز/فك تشفير محتوى protobuf ولكنه لا يعتمد على مكتبة Java Protobuf القياسيةcom.github.caligin.tinytypes ، Artifact tinytypes-jackson )org.vertx.java.core.json.JsonObject (أنواع عقدة org.json ) لدى مزودي Jackson Jax-RS معالجات لإضافة دعم DataFormat لتطبيقات Jax-RS (مثل Jersey ، Resteasy ، CXF). مقدمي الخدمات تنفيذ MessageBodyReader و MessageBodyWriter . تشمل التنسيقات المدعومة حاليًا JSON و Smile و XML و YAML و CBOR .
توفر وحدات تنسيق البيانات الدعم لتنسيقات البيانات غير JSON. معظمهم ينفذون ببساطة streaming API ، بحيث يمكن استخدام مكون ترتيب البيانات كما هو ؛ يقدم البعض (والقليلون) وظيفة مستوى databind إضافية للتعامل مع أشياء مثل المخططات.
تعد وحدات تنسيق البيانات حاليًا قابلة للاستخدام بالكامل ودعمها (رقم الإصدار بين قوسين ، إذا تم تضمينه ، هو أول إصدار من Jackson 2.x لتضمين الوحدة النمطية ؛ إذا فقدت ، مدرجة من 2.0)
streaming بالإضافة إلى دعم إضافي لرسومات databind لمخططات AVROstreaming تطبيقات ، مع إضافات databind الراحة الاختياريةAvrostreaming ، لا توجد تغييرات في databindstreaming databindstreaming والمواد databind . على غرار وضع Jaxb '"Code-First" (لا يوجد دعم لـ "Schema XML First" ، ولكن يمكنه استخدام Beans Jaxb)streaming البسيطهناك أيضًا وحدات تنسيق بيانات أخرى ، مقدمة من المطورين خارج فريق جاكسون كور:
MsgPack )تحدد تعليقات Jackson الخصائص المقصودة والتعامل المتوقع لـ Pojos ، بالإضافة إلى Jackson نفسه باستخدام هذا للقراءة/كتابة JSON وغيرها من التنسيقات ، فإنه يسمح أيضًا بتوليد المخططات الخارجية. يتم تضمين بعض هذه الوظائف في امتدادات تنسيق البيانات المذكورة أعلاه ؛ ولكن هناك أيضًا العديد من أدوات المخطط المستقلة ، مثل:
وحدات أخرى قابلة للاستخدام بالكامل من قبل فريق FasterXML تشمل:
@JacksonInject القياسية (أو بالإضافة إلى)JAXB كبديل (بالإضافة إلى أو بدلاً من) تعليقات جاكسون القياسية@JacksonInject القياسي@JsonProperty .على الرغم من أن Jackson Databind هو خيار جيد لربط البيانات بالأغراض العامة ، إلا أن بصمتها وبدء التشغيل قد تكون مشكلة في بعض المجالات ، مثل الهواتف المحمولة ؛ وخاصة للاستخدام الخفيف (زوجين من القراءات أو يكتب). بالإضافة إلى ذلك ، يجد بعض المطورين واجهة برمجة تطبيقات جاكسون الكاملة الساحقة.
لكل هذه الأسباب ، قررنا إنشاء مكتبة أبسط وأصغر بكثير ، والتي تدعم مجموعة فرعية من الوظائف ، تسمى Jackson Jr. إنه يعتمد على API Streaming Jackson ، ولكنه لا يعتمد على Databind. ونتيجة لذلك ، فإن حجمه (كلا الجرة ، واستخدام ذاكرة وقت التشغيل) أصغر بكثير ؛ وواجهة برمجة التطبيقات الخاصة بها مضغوطة للغاية.
إذا كنت ترغب في المساعدة في مشروع جاكسون ، فيرجى مراجعة المساهمة.
قد ترغب أيضًا في التحقق من:
يتم دعم مكونات Jackson من قبل مجتمع Jackson من خلال القوائم البريدية ، ومنتدى Gitter ، وقضايا GitHub. انظر المساهمة للحصول على التفاصيل الكاملة.
بالإضافة إلى دعم المجتمع المجاني (للجميع) ، يتوفر دعم المؤسسات - مع الإصدار 2.10 - كجزء من اشتراك Tidelift لمكونات جاكسون (معظم).
يعمل مشرفي Jackson وآلاف الحزم الأخرى مع Tidelift لتقديم الدعم والصيانة التجارية لتبعيات المصادر المفتوحة التي تستخدمها لإنشاء تطبيقاتك. وفر الوقت ، وتقليل المخاطر ، وتحسين صحة الكود ، مع دفع المشرفين على التبعيات الدقيقة التي تستخدمها. يتعلم أكثر.
تتبع الآلية الموصى بها للإبلاغ عن نقاط الضعف الأمنية الممكنة ما يسمى "خطة الكشف المنسقة" (انظر تعريف DCP للفكرة العامة). تتمثل الخطوة الأولى في تقديم جهة اتصال أمان Tidelift: سوف يقوم Tidelift بتوجيه جميع التقارير عبر نظامهم إلى محفوظات الحزم (الحزم) ذات الصلة ، وبدء العملية التي ستقوم بتقييم القلق وإصدار الإصلاحات الممكنة ، وإرسال إشعارات التحديث وما إلى ذلك. لاحظ أنك لست بحاجة إلى أن تكون مشتركًا في Tidelift لتقديم جهة اتصال أمان.
بدلاً من ذلك ، يمكنك أيضًا الإبلاغ عن نقاط الضعف المحتملة info في عنوان البريد الإلكتروني FasterXML DOT COM. لاحظ أن تقديم مشكلة للذهاب مع التقرير أمر جيد ، ولكن إذا قمت بذلك ، فيرجى عدم تضمين تفاصيل مشكلة الأمان في هذه المشكلة ولكن فقط في اتصال البريد الإلكتروني. من المهم أن يمنحنا الوقت لتوفير تصحيح ، إذا لزم الأمر ، للمشكلة.
يجب الإبلاغ عن Jackson Bugs مقابل المكون الذي تؤثر عليه: لهذا السبب ، لم يتم تمكين Tracker في هذا المشروع. إذا لم تكن متأكدًا من مشكلة المشروع المحددة ، فإن المكون الأكثر ترجيحًا هو jackson-databind ، لذلك يمكنك استخدام تعقب مشكلة Jackson Databind.
للاقتراحات والأفكار الجديدة ، جرب أفكار جاكسون المستقبلية
بالنسبة للمستخدمين لأول مرة ، هناك العديد من البرامج التعليمية الجيدة لاستخدام جاكسون ، بما في ذلك دروس الاستخدام العام / JSON:
ودروس تعليمية أكثر تحديدا:
تم نشر التقارير التالية حول مكونات جاكسون
نظرًا لأنك تريد على الأرجح آراء من قبل مطوري Java لا تتعلق بمشروع Jackson ، فيما يتعلق بالمكتبة التي يجب استخدامها ، إليك روابط لبعض المقارنات المستقلة الحالية: