Prototype และ JSON Tutorial

รู้เบื้องต้นเกี่ยวกับ JSON

JSON (JavaScript Object Notation) เป็นรูปแบบการแลกเปลี่ยนข้อมูลที่มีน้ำหนักเบา

  • JSON เป็นเรื่องง่ายสำหรับมนุษย์ในการอ่านและเขียน

  • JSON เป็นเรื่องง่ายสำหรับเครื่องในการแยกวิเคราะห์และสร้าง

  • JSON ขึ้นอยู่กับส่วนย่อยของภาษาโปรแกรม JavaScript

  • JSON ถูกใช้โดย API ทั่วทั้งเว็บและเป็นทางเลือกที่รวดเร็วสำหรับ XML ในคำขอ Ajax

  • JSON เป็นรูปแบบข้อความที่เป็นอิสระจากภาษาโดยสิ้นเชิง

Prototype 1.5.1 และเวอร์ชันที่ใหม่กว่ามีการเข้ารหัส JSON และรองรับการแยกวิเคราะห์

การเข้ารหัส JSON

Prototype มีวิธีการเข้ารหัสดังต่อไปนี้ -

NOTE - ตรวจสอบให้แน่ใจว่ามี prototype js เวอร์ชัน 1.6 เป็นอย่างน้อย

ส. วิธีการและคำอธิบาย
1. Number.toJSON ()

ส่งคืนสตริง JSON สำหรับ Number ที่กำหนด

2. สตริง. toJSON ()

ส่งคืนสตริง JSON สำหรับสตริงที่กำหนด

3. Array.toJSON ()

ส่งคืนสตริง JSON สำหรับ Array ที่กำหนด

4. Hash.toJSON ()

ส่งคืนสตริง JSON สำหรับ Hash ที่กำหนด

5. วันที่. toJSON ()

แปลงวันที่เป็นสตริง JSON (ตามรูปแบบ ISO ที่ใช้โดย JSON)

6. Object.toJSON ()

ส่งคืนสตริง JSON สำหรับวัตถุที่กำหนด

หากคุณไม่แน่ใจเกี่ยวกับประเภทของข้อมูลที่คุณต้องเข้ารหัสทางออกที่ดีที่สุดของคุณคือใช้ Object.toJSON ดังนั้น -

var data = {name: 'Violet', occupation: 'character', age: 25 };
Object.toJSON(data);

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -

'{"name": "Violet", "occupation": "character", "age": 25}'

นอกจากนี้หากคุณกำลังใช้วัตถุที่กำหนดเองคุณสามารถกำหนดวิธีการ toJSON ของคุณเองซึ่งจะถูกใช้โดยObject.toJSON ตัวอย่างเช่น -

var Person = Class.create();
Person.prototype = {
   initialize: function(name, age) {
      this.name = name;
      this.age = age;
   },  
   toJSON: function() {
      return ('My name is ' + this.name + 
         ' and I am ' + this.age + ' years old.').toJSON();
   }
};
var john = new Person('John', 49);
Object.toJSON(john);

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -

'"My name is John and I am 49 years old."'

การแยกวิเคราะห์ JSON

ใน JavaScript โดยทั่วไปการแยกวิเคราะห์ JSON ทำได้โดยการประเมินเนื้อหาของสตริง JSON Prototype แนะนำString.evalJSONเพื่อจัดการกับสิ่งนี้ ตัวอย่างเช่น -

var d='{ "name":"Violet","occupation":"character" }'.evalJSON();
d.name;

สิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -

"Violet"

ใช้ JSON กับ Ajax

การใช้ JSON กับ Ajax นั้นตรงไปตรงมามาก เพียงแค่เรียกใช้String.evalJSONบนคุณสมบัติ responseText ของการขนส่ง -

new Ajax.Request('/some_url', {
   method:'get',
   onSuccess: function(transport) {
      var json = transport.responseText.evalJSON();
   }
});

หากข้อมูลของคุณมาจากแหล่งที่ไม่น่าเชื่อถือโปรดแน่ใจว่าได้ฆ่าเชื้อแล้ว -

new Ajax.Request('/some_url', {
   method:'get',
   requestHeaders: {Accept: 'application/json'},
   onSuccess: function(transport) {
      var json = transport.responseText.evalJSON(true);
   }
});