Sunday, 30 September 2012

JSON - tất cả trong bài này!

Nếu bạn đã từng bị tạch tại cuộc phỏng vấn vào 1 công ty nào đó chỉ vì không biết JSON là gì thì ngay sau khi đọc bài này, bạn sẽ thấy thiếu sót của mình thực sự đáng tiếc thế nào !!!
Bởi cái tên JSON trông thì có vẻ nguy hiểm, nghe có vẻ lạ kỳ nhưng thực ra nó cực cực cực đơn giản.

Vâng, nếu bạn thấy tớ đã nhấn mạnh như thế nào thì hãy đọc hết bài này và thấy những điều tớ nói:
(Trông có vẻ dài - chủ yếu bởi các đoạn tiếng Anh tớ paste vào để mọi người tham khảo, còn với 1 kiến thức trọn gói mà thế này thì vẫn ngắn :D )
Cách đọc: (Việt sub: jây-sờn)
JSON (/ˈsən/)

What is JSON?

    JSON stands for JavaScript Object Notation
    JSON is lightweight text-data interchange format
    JSON is language independent *
    JSON is "self-describing" and easy to understand
    JSON is syntax for storing and exchanging text information. Much like XML.
    JSON is smaller than XML, and faster and easier to parse.


Túm lại JSON là 1 cú pháp (syntax), định dạng(format) chứ không phải 1 ngôn ngữ, dùng để chứa và trao đổi thông tin dạng text.
Cú pháp của JSON:
Cấu tạo của 1 JSON object thì rất đơn giản: hãy xem ví dụ dưới

employees object is an array of 3 employee records (objects).
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

nó chỉ có {} đánh dấu object, [] đánh dấu mảng, "fieldName": "value", các trường phân cách bởi dấu "," Đó là tất cả về cú pháp của nó! có đúng như tớ nói lúc đầu không???

JSON Syntax Rules
JSON syntax is a subset of the JavaScript object notation syntax.

    Data is in name/value pairs
    Data is separated by comma
    Curly brackets holds objects
    Square brackets holds arrays


Một chút cụ thể hơn về cái tên: JSON - nó sử dụng cú pháp giống hệt cú pháp tạo object của JavaScript, thế nên bạn có thể dễ dàng tạo các object thực từ dữ liệu JSON bằng hàm eval(...) của JavaScript.

JSON uses JavaScript syntax for describing data objects, but JSON is still language and platform independent. JSON parsers and JSON libraries exists for many different programming languages.
The JSON text format is syntactically identical to the code for creating JavaScript objects.
a JavaScript program can use the built-in eval() function and execute JSON data to produce native JavaScript objects.


Trước khi có JSON, người ta vẫn dùng XML để chứa và trao đổi thông tin giữ các ứng dụng khác nhau.
Giờ đây có JSON rồi, XML được lựa chọn khi phải chuyển đi một lượng text lớn, còn với lượng data nhỏ, chỉ gồm các string như id, dates, name... thì dùng JSON sẽ nhỏ , dễ dùng và dễ đọc hơn.

JSON has several advantages over XML. Its a lot smaller and less bloated, so you will be passing much less data over the network - which in the case of a mobile device will make a considerable difference.
Its also easier to use in javascript code as you can simply pass the data packet directly into a javascript array without any parsing, extracting and converting, so it is much less CPU intensive too.
In general, I would prefer XML only when I need to pass around a lot of text, since XML excels at wrapping and marking up text.
When passing around small data objects, where the only strings are small (ids, dates, etc.), I would tend to use JSON, as it is smaller, easier to parse, and more readable.


Much Like XML

    JSON is plain text
    JSON is "self-describing" (human readable)
    JSON is hierarchical (values within values)
    JSON can be parsed by JavaScript
    JSON data can be transported using AJAX

Much Unlike XML

    No end tag
    Shorter
    Quicker to read and write
    Can be parsed using built-in JavaScript eval()
    Uses arrays
    No reserved words

Why JSON?
For AJAX applications, JSON is faster and easier than XML:

Using XML
    Fetch an XML document
    Use the XML DOM to loop through the document
    Extract values and store in variables

Using JSON
    Fetch a JSON string
    eval() the JSON string
Viết dử liệu ở định dạng JSON:
bạn không phải làm việc này, cứ nhét dữ liệu bình thường của bạn vào các hàm hỗ trợ sẵn của các ngôn ngữ bạn dùng.
Với PHP: dùng hàm json_encode()
và để parse : json_decode? ?? chắc thế, chưa dùng
Parse trong trường hợp này là việc bạn chuyển dữ liệu từ dạng text json thành dữ liệu chương trình của bạn.

Tham khảo:   
http://www.w3schools.com/json/default.asp
http://stackoverflow.com/questions/1237649/json-or-soap-xml
Các thư viện JSON trong các ngôn ngữ:
Java:
Jackson - nghe đồn là nhanh nhất.
Gson - của Google
org.json - của org.json, built-in trong Android.

Các ngôn ngữ khác:
http://json.org/

SEO:
JSON là gì, tìm hiểu json, javascript object