Blog chia sẻ và thảo luận về IT|Programming Language|Search Engine Optimization|Data Base|Linux| ...

datnguyen

JSON (JavaScript Object Notation)

+ No comment yet
Chào các bạn,
Mình thấy khi lập trình người ta mã hóa chuỗi chứa dữ liệu dạng json, và họ mã hóa chuỗi đó. mình nghĩ đâu nhất thiết phải mã hóa nó đâu. có bạn nào giải thích dùm mình với. thank.
Thân mến!



1. Ko hiểu bác hỏi thế nào? Tại sao dùng dạng JSON hay là tại sao phải mã hóa. Nếu đã là JSON và chạy trên trình duyệt(nghe hơi chuối nhỉ) thì mã hóa là k có ý nghĩa. Còn nếu hỏi tại tao dùng dạng JSON thì kể sơ sơ ra sẽ là: Dễ chuyển thành dạng này vì có các thư viện hỗ trợ chuyển từ object sang JSON(đặc biệt thích hợp khi viết theo dạng 3 tầng/lớp... có dạng object), dung lượng nhỏ-các ký tự thừa trong JSON là rất ít gần như không đáng kể, tiếp nữa là k phải mất công phân tích ở client..


2. Thấy bác này hỏi vui tính nhỉ. Mã hóa md5 mới sợ chứ, JSON cũng k khác dạng thuần text là mấy-mã hóa cái nỗi gì khi mà đường nào cũng cho ng ta xem. Tranh thủ nói thêm 1 chút cho bác nào chưa biết về mấy cái vụ soi JSON thế nào cho dễ(trong trường hợp muốn lấy từ trang khác): Nếu tạo 1 biến JS thì có thể thấy nó trong DOM(dùng firebug, kích vào thẻ DOM, kích vào cái mũi tên -.chỉ đánh dấu chọn vào Show User defined Properties), biến này dc trình bày dạng cây nên dễ nhìn cấu trúc, còn dùng ajax thì kích vào thẻ Net, kich tiếp vào XHR, rồi chạy ajax, nếu kết quả trả về là JSOn thì nó sẽ hiện thêm 1 nút JSON nữa, kich vào là thấy nội dung thôi-khỏi phải soi biến cho mệt.
Còn thư viện thì bác vào trang chủ của nó (json.org) down đại 1 cái về- trong đấy m thấy cái này hay nhất: http://code.google.com/p/jsonexserializer/. Hỗ trợ chuyển từ object sang JSON, từ JSOn thành object, compact(viết JSOn trên 1 dòng), ignore property(cái khá là quan trọng vì nó tránh đệ quy)... còn nhiều cái nhỏ nhỏ nữa các bác tự mò.

3. Với những ứng dụng AJAX lấy và xử lý dữ liệu từ 1 web service nào đó khác domain. Nếu nội dung trả về có dạng XML thì javascript từ trang web của chúng ta không thể trực tiếp truy cập mà phải nhờ 1 proxy để đáp ứng yêu cầu của same origin policy. Còn nếu là dạng JSON thì không có vấn đề gì cả. (Thường dùng 1 lệnh eval là đủ.).

Tuy nhiên, với phác thảo về Cross-Origin Resource Sharing của W3C, có thể điều hạn chế nói trên của XML sẽ không còn nữa trong tương lai.

4. JSON cũng như XML, nó chỉ mô tả dữ liệu, không có khả năng trình bày, không có khả năng "chạy", nói chung là thụ động. Ta chỉ có thể nhận JSON rồi làm gì đó, hoặc ta có gì đó rồi chuyển thành JSON để gửi đi, chứ ta không thể "chạy" JSON. Để hiểu rõ hơn ta "mần" một ví dụ:

{
giaDinhChuChin: [
{ lam: "Cha", ten: "Chín", tuoi: 50, nam: true, nhomMau: "O" },
{ lam: "Mẹ", ten: "Tái", tuoi: 49, nam: false, nhomMau: "A" },
{ lam: "Con", ten: "Tèo", tuoi: 15, nam: true, nhomMau: "AB" },
{ lam: "Con", ten: "Tủm", tuoi: 14, nam: false, nhomMau: "O" }
],
giaDinhChuMuoi: [
{ lam: "Độc thân vui tính", ten: "Mười", tuoi: 35, nam: true, nhomMau: "B" }
]
}

Trên đây ta có một ví dụ nhỏ, mô tả thông tin về 2 gia đình, trong gia đình có những thông tin thành viên như: cha, mẹ, con. Những thông tin trên được diễn đạt bằng những kiểu dữ liệu cơ bản của Javascript: chuỗi, số, mảng, đối tượng. Vậy JSON là một kiểu mô tả dữ liệu dựa trên cơ sở là Javascript. Tất nhiên dựa trên cơ sở thì không có nghĩa là giống hoàn toàn. JSON có những cú pháp và quy định riêng của nó:

5.  Nên sử dụng JSON trong những tình huống nào
Lưu trữ dữ liệu đơn thuần. Đó là khi bạn muốn lưu trữ dữ liệu dưới dạng metadata ở phía server. Chuỗi JSON sẽ được lưu vào database và sau đó khi cần dữ liệu thì sẽ được giải mã. Ví dụ với PHP, cung cấp các hàm liên quan đến JSON để mã và giải mã là json_encode và json_decode.
Chú ý: phương pháp này cũng tương tự như sử dụng tính năng serialize và unserialize của PHP. Nhưng trong khi serialize và unserialize sử dụng với cả dữ liệu và biến, tức là phụ thuộc vào ngôn ngữ lập trình là PHP và dĩ nhiên không thể transfer sang ngôn ngữ lập trình khác để unserialize được. Vì vậy, nếu dữ liệu của bạn chỉ đơn thuần là dữ liệu cơ bản (chuỗi kí tự, số…) thì bạn hoàn toàn không nên sử dụng serialize mà nên sử dụng JSON.
Sử dụng JavaScript, ActionScript để xử lý thông tin trả về từ phía server. Rất nhanh và rất dễ dàng.

Đăng nhận xét