خانه / دانستنیها / یک کتابخانه سریع و انعطاف‌پذیر json برای جاوا

یک کتابخانه سریع و انعطاف‌پذیر json برای جاوا

با فرمت فشرده و قالب “کلید، مقدار” json حتما آشنایی دارید. این فرمت اغلب در کنار xml معرفی و مقایسه می‌شود که در این مطلب قبلا به آن پرداختیم. اما از بین چندین کتابخانه json برای جاوا کدامیک واقعا بهتر است؟

نمودار زیر عملکرد پنج کتابخانه مختلف در کار با ۱kb فایل JSON را مشاهده می‌کنید.

java-json-jsoniter

همانطور که مشاهده می‌شود jsoniter از کتابخانه‌های موجود بسیار سریع‌تر است.

مزایای jsoniter از این نوآوری‌ها می‌آید:

۱ Any Type: این کتابخانه بایت‌های خام را به عنوان نوع Any دریافت می‌کند. پردازش آن به شکل lazy انجام می‌شود. Any می‌تواند مشابه آرایه PHP یا اشیا جاوااسکریپت استفاده شود و weakly typed است.

۲ Iterator Abstraction: ورودی‌های JSON را به صورت اشیا iterator مانند در نظر می‌گیرد. شما می‌توانید روی گراف پیمایش کنید. مشابه gson اما بسیار ساده‌تر از آن.

۳ Trie-Tree: بزرگترین مشکل JSON  فیلدهای رشته‌ای آن است که مقایسه رشته‌ها زمان زیادی می‌برد. jsoniter برای افزایش سرعت از tri-tree استفاده می‌کند.

۴ code generation: تمام منطق decoder/encoder می‌تواند تولید کد شود. گزینه های مختلفی هم مثل reflection/dynamic codegen/static codegen در دسترس است.

۵ تنها برای ویژگی‌ که می‌خواهید هزینه کنید: ورودی به شکل InputStream کندتر از byte[] است. پارسرهای قدیمی از یک تابع مجازی یا پرچم‌های ویژگی استفاده می‌کردند که کارایی را به شدت پایین می‌آورد. Jsoniter از dynamic class shadowing استفاده کرده تا پیاده‌سازی‌ها را سوئیچ کند.

۶ اعتبارسنجی مورد نیاز فیلدها: مربوط به زمانی است که یک شی از فیلد int را پردازش می‌کنید.Jsoniter  با bit mask فیلدها سر وکار دارد.

حال یک مثال می‌بینیم.

هر خط یک شی است. اولین المان شناسه سفارش است و دومی جزئیات آن است. توجه کنید که:

خطوط زیادی وجود دارد و خواندن همه آن‌ها مشکلات حافظه ایجاد می‌کند.

شناسه بعضی سفارش‌ها عددی و بعضی رشته است.

جزئیات سفارش‌ها فیلدهای زیادی دارد و نیاز است که به یک شی متصل شود.

 در ۶ خط همه این مشکلات را حل می‌کنیم:

این مثال یک نمونه از انعطاف پذیری است. ممکن است پیچیده به نظر برسد اما اگر واقعا نیاز داشته باشید بسیار کاراست. برای کارهای روزانه، فقط دو خط زیر را به خاطر داشته باشید

این کتابخانه جدید است و گزارش خطاهای آن را به آدرس https://github.com/json-iterator/java می‌توانید ارسال کنید.

منبع:

https://dzone.com/

 

درباره فروغ مهرعلیان

محقق و پژوهشگر در شرکت مشاوران نرم‌افزاری اعوان

همچنین بررسی کنید

خالق جاوا در آمازون

جیمز گاسلینگ، خالق زبان جاوا اعلام کرده که اکنون برای سرویس‌های وب آمازون کار می‌کند. …

یک نظر

  1. خیلی ممنون این کتابخونه بدردم میخوره

     

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *