اذهب إلى المحتوى
  • 0

سؤال حول YAML/JSON/XML

Sami Remili

السؤال

Recommended Posts

  • 0

مرحباً بك سامي,

بتاريخ 5 ساعات قال Sami Remili:

JSON

هي إختصار ل JavaScript Object Notation وتعني ترميز الكائنات بإستخدام الجافاسكريبت ,وهي عبارة عن صيغة أو شكل سهل متسلسل لنقل البيانات ,سهلة القراءة للأشخاص ويمكن إستيعابها وسهلة الفهم للحاسوب. وهي صيغة مستقلة من اللغة نفسها ويمكن إستخدامها في في العديد من لغات البرمجة وتعمل كبديل لل XML. ويتم تمثيلها بين قوسين {} تحتوي على الاسم الخاص بالبيانات والقيمة الخاصة به وتفصل البيانات عن طريق فاصلة كما يلي:

{
  "firstName": "John",
  "lastName": "Smith",
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021"
  },
  "phoneNumbers": [
    { "type": "home", "number": "212 555-1234" },
    { "type": "fax", "number": "646 555-4567" }
  ]
}

حيث أن firstName هي اسم البيانات أو حامل القيمة و John هي القيمة.

بتاريخ 5 ساعات قال Sami Remili:

YAML

اختصار ل  Ain’t Markup Language وتعني ليست لغة ترميز وهي سلسلة من البيانات القابلة للقراءة لدى البشر أو يمكن فهمها يستخدم في ملفات التكوين والتطبيقات التي يتم فيها تخزين ونقل البيانات. يتم إستخدامها لنفس الهدف الخاص ب XML ولكنها تحتوي على بنية بسيطة وطريقة بنيتها متمثلة أو مأخوذة من العديد من لغات البرمجة الأخرى ويمكن إستخدامها في أي لغة تحتاج لتخزين بيانات.

ومثال لشكل بنيتها: 

- hosts: webservers

  vars:
    http_port: 80
    max_clients: 200

  remote_user: root

  tasks:
  - name: ensure apache is at the latest version
    yum:
      name: httpd
      state: latest

  - name: write the apache config file
    template:
      src: /srv/httpd.j2
      dest: /etc/httpd.conf
    notify:
    - restart apache

  - name: ensure apache is running
    service:
      name: httpd
      state: started

  handlers:
    - name: restart apache
      service:
        name: httpd
        state: restarted

فهي قريبة من تمثل لغة بايثون للكود. حيث أن مثلا tasks  تماثل array أو مصفوفة تحتوي على عدة بيانات والتي بداخلها name وهو اسم المعلومة و ما بعد : هي البيانات لل name وبنفس التنسيق لباقي البيانات.

بتاريخ 5 ساعات قال Sami Remili:

XML

اختصار ل eXtensible Markup Language وتعني لغة الترميز القابلة للتمدد وتنتمي للغات الترميز وهي لغة ترميز عامة تستخدم لغرض نقل البيانات عبر الإنترنت بطريقة مرتبة ومنظمة ,تستطيع وصف العديد من أنواع البيانات وتستطيع التعامل مع الكثير من لغات البرمجة. ومعنى قابلة للتوسع أنه يمكنك تعريف شكل البيانات بالطريقة التي تريد وإنشاء وسوم خاصة حسب الحاجة ليس كلغة الترميز ال HTML حيث أنه هنالك وسوم محددة معرفة من قبلها تستطيع التعرف عليها فحسب بعكس ال XML. ومثال عليها:

<?xml version="1.0" encoding="ISO-8859-1"?>  
<note>  
  <to>Tove</to>  
  <from>Jani</from>  
  <heading>Reminder</heading>  
  <body>Don't forget me this weekend!</body>  
</note>

حيث أنها تبدأ بالمعرف وهكذا يتم التعرف على أن هذا الملف هو ملف يحتوي بيانات XML و note هي حاوية لبيانات والتي تحتوي على العناصر منها to ,from ,body ويتم إغلاق كل وسم وبداخلها تحتوي على البيانات.

بتاريخ 5 ساعات قال Sami Remili:

وماهو الفرق بينهم  و متى نستعمل JSON و متى نستعمل YAML و متى نستعمل XML

من الصعب تحديد الإختلافات بين المصطلحات الثلاثة لأنه إستخدامها متقارب ولكن يمكن التفريق بينهم حسب لغة البرمجة المستخدمة في التطبيق الخاص بك ففي حال:

  • كنت تستخدم JavaScript ف JSON هي الخيار الأمثل.
  • أما في حال كنت تستخدم لغة JAVA ف XML الخيار الأمثل.
  • وفي حال كنت تستخدم Python ف YAML أفضل.

ولكن الكلام أعلاه ليس مقياس ففي حال كنت تستخدم لغة جافا ولكنك تستقبل بيانات عن طريق JSON أو YAML فإستخدام واحد منهما يكون أفضل وأيضاً التفضيل هنا فقط لأن اللغة تتعامل مع ناقلات البيانات هذه بطريقة مباشرة بدون إستخدام مكتبات خارجية ,فكما أسلفت في التعريفات فيمكن إستخدام أي منها لنقل البيانات. يمكن القول أن التعامل مع JSON ربما يكون الأسهل والأخف في نقل البيانات عبر الشبكة لذا تكون منتشرة أكثر ولكن للبيانات الكبيرة ف XML الخيار الأمثل أما YAML فهي أقل إنتشاراً. في حال كنت تريد التعديل على البيانات من قبل الإنسان ف XML هي الأفضل في ذلك وفي حال كنت لا تهتم بذلك فإستخدام JSON أفضل هنا.

تحياتي.

تم التعديل في بواسطة أسامة كمال النبريص
إضافة بعض الأمثلة
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 13 ساعات قال أسامة كمال النبريص:

مرحباً بك سامي,

هي إختصار ل JavaScript Object Notation وتعني ترميز الكائنات بإستخدام الجافاسكريبت ,وهي عبارة عن صيغة أو شكل سهل متسلسل لنقل البيانات ,سهلة القراءة للأشخاص ويمكن إستيعابها وسهلة الفهم للحاسوب. وهي صيغة مستقلة من اللغة نفسها ويمكن إستخدامها في في العديد من لغات البرمجة وتعمل كبديل لل XML. ويتم تمثيلها بين قوسين {} تحتوي على الاسم الخاص بالبيانات والقيمة الخاصة به وتفصل البيانات عن طريق فاصلة كما يلي:


{
  "firstName": "John",
  "lastName": "Smith",
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021"
  },
  "phoneNumbers": [
    { "type": "home", "number": "212 555-1234" },
    { "type": "fax", "number": "646 555-4567" }
  ]
}

حيث أن firstName هي اسم البيانات أو حامل القيمة و John هي القيمة.

اختصار ل  Ain’t Markup Language وتعني ليست لغة ترميز وهي سلسلة من البيانات القابلة للقراءة لدى البشر أو يمكن فهمها يستخدم في ملفات التكوين والتطبيقات التي يتم فيها تخزين ونقل البيانات. يتم إستخدامها لنفس الهدف الخاص ب XML ولكنها تحتوي على بنية بسيطة وطريقة بنيتها متمثلة أو مأخوذة من العديد من لغات البرمجة الأخرى ويمكن إستخدامها في أي لغة تحتاج لتخزين بيانات.

ومثال لشكل بنيتها: 


- hosts: webservers

  vars:
    http_port: 80
    max_clients: 200

  remote_user: root

  tasks:
  - name: ensure apache is at the latest version
    yum:
      name: httpd
      state: latest

  - name: write the apache config file
    template:
      src: /srv/httpd.j2
      dest: /etc/httpd.conf
    notify:
    - restart apache

  - name: ensure apache is running
    service:
      name: httpd
      state: started

  handlers:
    - name: restart apache
      service:
        name: httpd
        state: restarted

فهي قريبة من تمثل لغة بايثون للكود. حيث أن مثلا tasks  تماثل array أو مصفوفة تحتوي على عدة بيانات والتي بداخلها name وهو اسم المعلومة و ما بعد : هي البيانات لل name وبنفس التنسيق لباقي البيانات.

اختصار ل eXtensible Markup Language وتعني لغة الترميز القابلة للتمدد وتنتمي للغات الترميز وهي لغة ترميز عامة تستخدم لغرض نقل البيانات عبر الإنترنت بطريقة مرتبة ومنظمة ,تستطيع وصف العديد من أنواع البيانات وتستطيع التعامل مع الكثير من لغات البرمجة. ومعنى قابلة للتوسع أنه يمكنك تعريف شكل البيانات بالطريقة التي تريد وإنشاء وسوم خاصة حسب الحاجة ليس كلغة الترميز ال HTML حيث أنه هنالك وسوم محددة معرفة من قبلها تستطيع التعرف عليها فحسب بعكس ال XML. ومثال عليها:


<?xml version="1.0" encoding="ISO-8859-1"?>  
<note>  
  <to>Tove</to>  
  <from>Jani</from>  
  <heading>Reminder</heading>  
  <body>Don't forget me this weekend!</body>  
</note>

حيث أنها تبدأ بالمعرف وهكذا يتم التعرف على أن هذا الملف هو ملف يحتوي بيانات XML و note هي حاوية لبيانات والتي تحتوي على العناصر منها to ,from ,body ويتم إغلاق كل وسم وبداخلها تحتوي على البيانات.

من الصعب تحديد الإختلافات بين المصطلحات الثلاثة لأنه إستخدامها متقارب ولكن يمكن التفريق بينهم حسب لغة البرمجة المستخدمة في التطبيق الخاص بك ففي حال:

  • كنت تستخدم JavaScript ف JSON هي الخيار الأمثل.
  • أما في حال كنت تستخدم لغة JAVA ف XML الخيار الأمثل.
  • وفي حال كنت تستخدم Python ف YAML أفضل.

ولكن الكلام أعلاه ليس مقياس ففي حال كنت تستخدم لغة جافا ولكنك تستقبل بيانات عن طريق JSON أو YAML فإستخدام واحد منهما يكون أفضل وأيضاً التفضيل هنا فقط لأن اللغة تتعامل مع ناقلات البيانات هذه بطريقة مباشرة بدون إستخدام مكتبات خارجية ,فكما أسلفت في التعريفات فيمكن إستخدام أي منها لنقل البيانات. يمكن القول أن التعامل مع JSON ربما يكون الأسهل والأخف في نقل البيانات عبر الشبكة لذا تكون منتشرة أكثر ولكن للبيانات الكبيرة ف XML الخيار الأمثل أما YAML فهي أقل إنتشاراً. في حال كنت تريد التعديل على البيانات من قبل الإنسان ف XML هي الأفضل في ذلك وفي حال كنت لا تهتم بذلك فإستخدام JSON أفضل هنا.

تحياتي.

لك جزيل الشكر أخي  بارك الله فيك تحياتي

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...