Nguyên mẫu và Hướng dẫn JSON

Giới thiệu về JSON

JSON (JavaScript Object Notation) là một định dạng trao đổi dữ liệu nhẹ.

  • JSON rất dễ đọc và viết cho con người.

  • JSON dễ dàng để máy phân tích cú pháp và tạo.

  • JSON dựa trên một tập hợp con của Ngôn ngữ lập trình JavaScript.

  • JSON đáng chú ý được sử dụng bởi các API trên khắp web và là một giải pháp thay thế nhanh chóng cho XML trong các yêu cầu Ajax.

  • JSON là một định dạng văn bản hoàn toàn độc lập với ngôn ngữ.

Prototype 1.5.1 và phiên bản mới hơn, có hỗ trợ mã hóa và phân tích cú pháp JSON.

Mã hóa JSON

Prototype cung cấp các phương pháp sau để mã hóa:

NOTE - Đảm bảo có ít nhất phiên bản 1.6 của prototype.js.

Không. Phương pháp & Mô tả
1. Number.toJSON ()

Trả về một chuỗi JSON cho một Số đã cho.

2. String.toJSON ()

Trả về một chuỗi JSON cho Chuỗi đã cho.

3. Array.toJSON ()

Trả về một chuỗi JSON cho Mảng đã cho.

4. Hash.toJSON ()

Trả về một chuỗi JSON cho Hash đã cho.

5. Date.toJSON ()

Chuyển đổi ngày thành chuỗi JSON (theo định dạng ISO được JSON sử dụng).

6. Object.toJSON ()

Trả về một chuỗi JSON cho Đối tượng đã cho.

Nếu bạn không chắc chắn về loại dữ liệu bạn cần mã hóa, cách tốt nhất là sử dụng Object.toJSON như vậy -

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

Điều này sẽ tạo ra kết quả sau:

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

Hơn nữa, nếu bạn đang sử dụng các đối tượng tùy chỉnh, bạn có thể đặt phương thức toJSON của riêng mình, phương thức này sẽ được Object.toJSON sử dụng . Ví dụ -

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);

Điều này sẽ tạo ra kết quả sau:

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

Phân tích cú pháp JSON

Trong JavaScript, phân tích cú pháp JSON thường được thực hiện bằng cách đánh giá nội dung của một chuỗi JSON. Prototype giới thiệu String.evalJSON để giải quyết vấn đề này. Ví dụ -

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

Điều này sẽ tạo ra kết quả sau:

"Violet"

Sử dụng JSON với Ajax

Sử dụng JSON với Ajax rất đơn giản. Chỉ cần gọi String.evalJSON trên thuộc tính responseText của truyền tải -

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

Nếu dữ liệu của bạn đến từ một nguồn không đáng tin cậy, hãy đảm bảo làm sạch nó -

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