سؤال

إذن BSON هو JSON التسلسلي أليس كذلك؟

{"hello": "world"}"\x16\x00\x00\x00\x02hello\x00 \x06\x00\x00\x00world\x00\x00"

ولكن لماذا يسمى Binary JSON؟ ما الذي يمثله الثنائي؟

أميل دائمًا إلى ربط ثنائي مع 10101010101. لكن تنسيق تسلسل BSON أعلاه لم يكن في 101010101010.

هل يمكن لأحد أن يشرح لي ما يعنيه الثنائي هنا لذلك أفهم لماذا يطلق عليه Binary JSON؟

هل كانت مفيدة؟

المحلول

إنه ثنائي بدلاً من النص. في حين أن JSON هو نص قابل للقراءة الإنسان ، فإن BSON هو بيانات ثنائية (فقط بايت). أنت استطاع اكتبها على أنها 1001010 وما إلى ذلك ، ولكن من الأكثر شيوعًا إظهار كل بايت في وقت واحد (لذا فإن x16 هو مجرد 16 ، أي البايت العشري 22). يتم استخدام "Binary" هنا بشكل أساسي لمقارنتها بالبيانات النصية ، وليس القول أنها في الواقع قاعدة 2 على وجه الخصوص.

هذا يعني أنه يمكنك فقط استخدام BSON في المواقف حيث يمكنك نقل البيانات الثنائية التعسفية. على سبيل المثال ، إذا كنت ترغب في تضمين BSON في مستند XML (لأي سبب من الأسباب!) ، فعليك أن تقوم بتشفيرها أولاً ، لأن XML هو تمثيل مستند إلى النص.

نصائح أخرى

الثنائي هو حقًا تسمية خاطئة ، لأن كل شيء على جهاز الكمبيوتر الخاص بك "ثنائي" على مستوى ما. الثنائي ، عندما يتعلق الأمر بتنسيقات تدفق الملف أو الشبكة ، يعني عدم فهمه للبشر. كما أنه يميل إلى أن يكون مضغوطًا.

أمثلة على الملفات النصية أو "القابلة للقراءة البشرية" (البشرية مفهومة) تنسيقات وتدفق:

أمثلة على تنسيقات الملف "الثنائي" وتنسيق الدفق:

الشيء الأكثر ملاحظة هنا هو أن التنسيقات البشرية المفهومة تحتاج إلى تفسير أقل بكثير إذا كنت ببساطة كسرها مفتوحة والبدء في القراءة. قد تحتاج تنسيقات الملفات الثنائية إلى كتب كاملة لشرح :)

التنسيق ليس بالضرورة "ثنائي" بحت أو إنسان بحت ، على الرغم من ذلك. على سبيل المثال ، ربما يمكنك فهم سلسلة من أرقام الأرقام المفردة بدون مسافات ، والتي تمثل مجموعة من أرقام الأرقام المفردة. ربما لم تتمكن من فهم سلسلة من 48 رقمًا (بدون مسافات) ، والتي تمثل قيم X و Y و Z لـ 16 رؤوسًا ثلاثية الأبعاد ، على الرغم من أنه يمكنك "قراءة "ها. أيضًا ، هناك مثال لـ Skeet على البيانات "الثنائية" المشفرة ، خاصةً إذا كان مضمنًا بتنسيق أكثر إنسانية مفهومة.

تم شرح السبب الذي يسمى "ثنائي" بالفعل: في الأساس ، إنه ليس نصًا ، وبالتالي تمييز على غرار Unix (الملفات النصية الثنائية مقابل).

لكن JSON Part غريب أيضًا ، لأن BSON ليس JSON - إنها ليست مجموعة فرعية ولا superset. لديها العديد من أنواع البيانات ، لذلك فهي نوع من superset. لكنه أيضًا لا يدعم جميع JSON القانونية بسبب قيود على أشياء مثل اسم الممتلكات وقيود طول قيمة السلسلة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top