Sau phần 1 thì chắc hẳn các bạn đã hiểu được một phần về JSON và bài này sẽ nói cho ta về một số tình huống thực tế mà ta có thể gặp về việc sử dụng JSON để lưu trữ và CSDL. Tuy nhiên vì có rất nhiều tình huống nên mình không thể liệt kê hết được và mình sẽ chỉ trình bày một số hay gặp cũng như để các bạn biết cách và ý tưởng làm việc.

3. Xử lý nhiều hình ảnh

Chức năng này thường được sử dụng rất nhiều vì các trang web hay ứng dụng nào cũng đều có hình ảnh đi kèm. Yêu cầu ở đây chính là việc ta xây dựng chức năng mỗi sản phẩm có thể hiển thị nhiều hình ảnh và trong danh sách hình ảnh đó sẽ chọn một hình ảnh làm đại diện.

Ở đây ta sẽ có một cách là lưu trữ hình ảnh vào một bảng riêng và có một mối quan hệ với bảng bài viết. Nhưng để làm việc một cách đơn giản hóa đi ta nên sử dụng JSON để lưu trữ. Với mỗi hình ảnh thì ta sẽ cần thông tin như sau:

  • Tên hình ảnh
  • Mô tả về ảnh
  • Đường dẫn ảnh
  • Có phải hình đại diện không

Ta có thể lưu trữ hình ảnh với cấu trúc chuỗi JSON như sau:

{
    "name" : "tên hình ảnh",
    "desc" : "mô tả hình ảnh",
    "url"  : "đường dẫn hình ảnh",
    "is_avatar" : "có phải hình đại diện hay không"
}

Với việc có nhiều hình ảnh ta sẽ sử dụng cặp dấu ngoặc vuông [] để bao quanh danh sách các hình:

[
    {
        "name" : "tên hình ảnh",
        "desc" : "mô tả hình ảnh",
        "url"  : "đường dẫn hình ảnh",
        "is_avatar" : "có phải hình đại diện hay không"
},
  {
        "name" : "tên hình ảnh",
        "desc" : "mô tả hình ảnh",
        "url"  : "đường dẫn hình ảnh",
        "is_avatar" : "có phải hình đại diện hay không"
    }
]

Sau khi lưu vào CSDL thì lúc hiển thị bạn chỉ cần sử dụng hàm json_decode để chuyển thành một mảng là có thể sử dụng vòng lặp foreach để hiển thị hình ảnh rồi. Khá là đơn giản vì mình đã nói ở bài trước rồi. Vấn đề còn lại là ta dùng Javascript hoặc jQuery để xây dựng chức năng chọn nhiều hình trong admin.

4. Lưu trữ dữ liệu cấu hình cho Website

Mỗi website thông thường chúng ta cần lưu trữ các thông số cấu hình như:

  • Tiêu đề chính của site
  • Thông tin gửi mail: host, smtp,…
  • Một số thông tin liên quan để hiển thị

Với trường hợp này bạn hoàn toàn có thể sử dụng một bảng trong MySQL để lưu trữ. Tuy nhiên bạn vẫn hoàn toàn có thể sử dụng JSON để lưu trữ nó vào một file txt. Vấn đề chỉ là ta sẽ code như nào để lưu trữ nó vào file txt. Lúc này cấu trúc chuỗi JSON chúng ta sẽ như sau:

  "site_title" : "tiêu đề site",
    "mailer" : {
        "smtp" : "thông tin smtp",
        "host" : "thông tin host"
    },
    "other_info" : "các thông tin khác"
}

5. Xây dựng các API cho các ứng dụng

Trường hợp này thì ta có thể làm nhiều cách làm. Ta có thể sử dụng XML để thay thế, tuy nhiên thì hiện nay người ta hay dùng và khuyến khích ta sử dụng JSON bởi vì nó đơn giản và hiệu quả hơn.

Mỗi API truy vấn vào CSDL và sẽ lấy thông tin theo yêu cầu của bài toán, sau đó sẽ chuyển nó thành một chuỗi JSON dạng như sau để cho ứng dụng hay mobile có thể đọc được:

{
    "error" : "0",
    "data" : {       
    }
}

Trong đó giá trị của error bằng 0 tức là request bị lỗi và bằng 1 tức là thành công. Còn key data sẽ lưu danh sách dữ liệu trả về. Lúc này ở bên Mobile bạn chỉ việc kiểm tra key error và xử lý tương ứng với tình huống.