ما هي المزايا النسبية لملفات CSV وJSON وXML لواجهة برمجة تطبيقات REST؟

StackOverflow https://stackoverflow.com/questions/138929

  •  02-07-2019
  •  | 
  •  

سؤال

نحن نخطط حاليا لجديد API للتطبيق ومناقشة تنسيقات البيانات المختلفة التي يجب أن نستخدمها للتبادل.هناك نقاش مكثف إلى حد ما يدور حول المزايا النسبية لـ CSV, JSON و XML.

في الأساس، جوهر الحجة هو ما إذا كان ينبغي لنا أن ندعم CSV على الإطلاق بسبب عدم وجود العودية (أي.وجود وثيقة التي لديها multiple authors و multiple references قد يحتاج multiple API calls للحصول على كافة information).

في التجارب التي قد تكون لديكم عند العمل مع المعلومات من Web APIs والأشياء التي يمكننا القيام بها لتسهيل حياة المطورين الذين يعملون معنا API.


قرارنا:

لقد قررنا تقديم XML و JSON نظرا لصعوبة التكرار في CSV تحتاج إلى مكالمات متعددة لعملية منطقية واحدة. JSON لا يوجد محلل في Qt و Protocol Buffers لا يبدو أن لديها non-alpha PHP التنفيذ لذا فهي متاحة في الوقت الحالي أيضًا ولكن من المحتمل أن يتم دعمها في النهاية.

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

المحلول

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

أنا شخصياً أحب الأقواس.أراهن أن المزيد من المطورين مرتاحون للعمل مع بيانات XML مقارنة بـ json.

نصائح أخرى

مزايا:

  • XML - الكثير من المكتبات، المطورون على دراية بها، XSLT، يمكن التحقق من صحتها بسهولة بواسطة كل من العميل والخادم (XSD، DTD)، البيانات الهرمية
  • JSON - يمكن تفسيره بسهولة من جانب العميل، والترميز المضغوط، والبيانات الهرمية
  • CSV - يفتح في Excel(؟)

سلبيات:

  • XML - منتفخ، ويصعب تفسيره في JavaScript مقارنة بـ JSON
  • JSON - إذا تم استخدامه بشكل غير صحيح، فيمكن أن يشكل ثغرة أمنية (لا تستخدم التقييم)، ولا تحتوي جميع اللغات على مكتبات لتفسيرها.
  • CSV - لا يدعم البيانات الهرمية، وستكون أنت الوحيد الذي يفعل ذلك، وفي الواقع، يعد تحليل ملفات CSV الصالحة أصعب بكثير مما يعتقده معظم المطورين (يمكن أن تحتوي قيم CSV على أسطر جديدة طالما كانت بين علامتي الاقتباس، وما إلى ذلك).

بالنظر إلى ما سبق، لن أزعج نفسي بدعم ملف CSV.يمكن للعميل إنشائه إما من XML أو JSON إذا كانت هناك حاجة إليه بالفعل.

يواجه ملف CSV العديد من المشكلات باعتباره نموذج بيانات معقدًا لدرجة أنني لن أستخدمه.يتميز XML بالمرونة الشديدة وسهولة البرمجة - ولن يواجه العملاء أي مشكلة في ترميز مولدات وموزعات XML، ويمكنك حتى توفير نماذج من المحللين باستخدام SAX.

هل قمت بمراجعة تنسيق بيانات شبكة Google؟يطلق عليه مخازن البروتوكول المؤقتة.لا أعرف ما إذا كان ذلك مفيدًا لخدمة REST، إلا أنه يتخطى طبقة HTTP بأكملها أيضًا.

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

ليس لدي أي خبرة في استخدام JSON، حيث يعمل ملف CSV إلى حد تكون فيه بياناتك جدولية جدًا ومنظمّة بشكل متساوٍ.يمكن أن يصبح XML غير عملي بسرعة كبيرة، خاصة إذا لم يكن لديك أداة تقوم بإنشاء الارتباطات للكائنات الخاصة بك تلقائيًا.

لم أحاول هذا أيضا ولكن مخازن بروتوكول جوجل يبدو جيدًا حقًا، وتنسيق بسيط، وينشئ روابط تلقائية لـ C++ وJava وPython وينفذ التسلسل وإلغاء التسلسل للكائنات التي تم إنشاؤها.

فضلا عن ما قاله آلان لالوند بالفعل, إحدى المزايا الإضافية لملف CSV هي أنه يميل إلى أن يكون أكثر إحكاما من XML أو حتى JSON.لذلك، إذا كانت البيانات الخاصة بك بشكل صارم جدولي، مع تسلسل هرمي مسطح تمامًا، قد يكون ملف CSV هو الاختيار الصحيح.تتمثل العيوب الإضافية لملف CSV في أنه قد يستخدم محددات وفواصل عشرية مختلفة، اعتمادًا على الأداة (وحتى البلد!) التي أنشأته.

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