Hướng dẫn create file json php

Chào các bạn, hôm nay là bài đầu tiên của loạt bài JSon trong Android, Cũng như loạt bài Database trong Android trước, mình sẽ hướng dẫn các bạn làm 1 app vui nhộn cụ thể từ đầu đến cuối sử dụng json tương tác với cơ sở dữ liệu trên web server – App lưu trữ danh sách người yêu cũ =)).

Loạt bài này các bạn cần có thêm một số kiến thức cơ bản liên quan như MySQL, Php.
Bài đầu tiên mình sẽ giới thiệu sơ qua về JSOn và cách xuất JSon bằng php

JSon là gì, tại sao lại dùng JSon

JSon nó là từ viết tắt của JavaScript Object Notation, nó thực chất là một chuỗi có cấu trúc nhất định, ví dụ như cấu trúc tại: https://www.cachhoc.net/mobile/demo-json/lover.php?test=true&nick=quan

[
    {
        "id": "1",
        "nick": "quan",
        "name": "Nguyen Hoang Hau",
        "begin_date": "20\/10\/2010",
        "end_date": "19\/11\/2010",
        "phone": "0987654321"
    },
    {
        "id": "2",
        "nick": "quan",
        "name": "Cao Thi Thap",
        "begin_date": "20\/11\/2010",
        "end_date": "14\/02\/2011",
        "phone": "1234567890"
    },
    {
        "id": "3",
        "nick": "quan",
        "name": "L\u00f2 L\u1ea5p L\u00f3",
        "begin_date": "08\/03\/2011",
        "end_date": "01\/06\/2011",
        "phone": "0987612345"
    }
]

Cấu trúc của JSon có thể bắt đầu bằng một cặp dấu ngoặc vuông [] như trên, khi đó nó biểu diễn một mảng các phần tử bên trong (bên trên là mảng gồm 3 phần từ). Hoặc cũng có thể bắt đầu bằng cặp dấu ngoặc nhọn {}, khi đó nó biễu diễn một phần tử và trong mỗi phần tử đều có các cặp key-value (khóa và giá trị), như trên bạn có thể thấy “id”:”2″ là một cặp key-value. Hoặc JSon cũng có thể chỉ là một cặp key-value hay một chuỗi rất bình thường. Nhưng ở đây mình muốn các bạn chú ý và phân biệt JSon trong cặp ngoặ vuông và ngoặc nhọn vì cách xử lý của chúng rất khác nhau (Một mảng các phần từ và một phần tử).

Chúng ta hoàn toán có thể sử dụng xml hoặc một số cấu trúc khác để định dạng và truyền dữ liệu nhưng với JSon nó là một định dạng nhỏ gọn và dễ dùng, đang là xu thế hiện nay.

Cách xuất JSon từ web server bằng php

Để có thể thực hành xuất JSon từ web server, các bạn cần có một server (host) riêng. Nếu bạn không có host riêng bạn hoàn toàn có thể sử dụng các dịch vụ cung cấp host miễn phí có hỗ trợ php và MySQL như Hostinger, các bạn chỉ cần đăng ký một tài khoản, tạo 1 website miễn phí trên đó (cái này bạn dễ dàng làm với sự trợ giúp của Google) và chúng ta đã có thể bắt đầu.

Để xuất dữ liệu bằng php chúng ta có nhiều cách nhưng mình thường dùng lệnh sau để xuất vì nó cho phép xuất ngay định dạng cấu trúc dễ nhìn:

$json = json_encode($result, JSON_PRETTY_PRINT);
print_r($json);

Tuy nhiên trên Hostinger không hiểu sao mình dùng JSON_PRETTY_PRINT thì không xuất được ra nên trên này chỉ dùng json_encode($result).
Trong đó $result là một biến dữ liệu, cụ thể một ví dụ đơn giản tạo 1 file temp.php (Các bạn vào trình quản lý file vào tạo file như bình thường):

Khi các bạn chạy mở file này ra sẽ được đoạn json là 1 dòng:

{"name":"nguyenvanquan7826","website":"https:\/\/cachhoc.net"}

check: http://svictu.esy.es/mobile/old-lover/temp.php

Nếu json không xuất theo cấu trúc dễ nhìn các bạn có thể chép nó vào trang http://jsonviewer.stack.hu/ và chọn format để nhìn cho dễ.

Khi xuất ra json, có thể bạn sẽ nhìn thấy nó lỗi font (như ví dụ đầu bài, phần tử thứ 3 có name là Lò Lấp Ló nhưng bị lỗi font) hoặc có thêm một số ký tự đặc biệt (như đường dẫn http:// thì là http:\/\/), cái này các bạn yên tâm vì nó là định dạng json, khi loat xuống để android xử lý thì sẽ không sao hết.

Kết thúc phần 1 ở đây, phần tiếp theo mình sẽ hướng dẫn các bạn tạo Database và xuất JSon từ Database.

Bài viết được thực hiện trong loạt bài hướng dẫn JSon trong Android bởi nguyenvanquan7826

Trong bài này, chúng ta sẽ tìm hiểu về dữ liệu json trong PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

1. JSON (JavaScript Object Notation) là gì?

JSON (JavaScript Object Notation) là một định dạng (format) dữ liệu bắt nguồn từ ngôn ngữ Javascript. Dữ liệu trong JSON chủ yếu là text, được lưu trữ theo cặp thuộc tính (attribute) – giá trị (value). JSON thường được sử dụng trong các trường hợp:

  • Phát triển web: truyền gửi dữ liệu từ server đến client và ngược lại.

Hướng dẫn create file json php

  • Các file cấu hình (configuration files): JSON có thể được sử dụng để lưu trữ các cấu hình (configurations) và cài đặt (settings) trong các ứng dụng. Ví dụ như file settings.json trong Visual Studio Code.

Hướng dẫn create file json php

  • Hoặc đơn giản là dùng JSON để lưu trữ dữ liệu.

Hướng dẫn create file json php

Bên dưới là ví dụ file info.json lưu trữ dữ liệu về thông tin của website gochocit.com.

{ 
    "domainname": "gochocit.com",
    "active": true,
    "numberposts": 360,
    "category": ["hardware", "software", "network"],
    "facebookpage": "https://www.facebook.com/gochocit/",
    "build": {
        "language": "php",
        "cms": "wordpress",
        "database": "mysql"
    }
}

Các lưu ý chính về định dạng của JSON là:

  • JSON bao gồm một chuỗi các cặp key – value (có thể gọi là attribute – value). Và chúng được bao quanh bởi dấu ngoặc nhọn {}.
  • Mỗi cặp key – value có định dạng "key": . Value có thể là bất kỳ kiểu dữ liệu nào như object, list, string, number, boolean, null,
  • Các cặp key – value được cách nhau bởi dấu phẩy ,. Chỉ cặp key – value cuối cùng thì không có dấu phẩy , phía sau.

Trong PHP, hàm json_encode()json_decode() được xây dựng sẵn để giúp lập trình viên xử lý dữ liệu JSON.

2. Hàm json_encode() trong PHP

 Hàm json_encode() trong PHP giúp trả về định dạng dữ liệu json. Cú pháp:

json_encode(mixed $value, int $flags = 0, int $depth = 512): string|false

Trong đó,

$value: biến lưu dữ liệu cần mã hóa (encode) sang định dạng json. Lưu ý: Tất cả dữ liệu string cần phải được mã hóa UTF-8 trước khi chuyển sang json.

$flag: là những json constant trong PHP, quy định định dạng json sẽ trả về như thế nào.

$depth: Độ sâu (depth) tối đa của json và được thiết lập lớn hơn 0.

Kết quả trả về của hàm json_encode() là một chuỗi json hoặc false nếu không thể mã hóa $value sang dữ liệu json.

Ví dụ encode mảng kết hợp sang chuỗi json

"gochocit.com", "numberposts"=>410,
  "build"=>array("language"=>"php", "cms"=>"wordpress", "database"=>"mysql")
);
echo json_encode($info);
?>
Kết quả
{
   "domainname":"gochocit.com",
   "numberposts":410,
   "build":{
      "language":"php",
      "cms":"wordpress",
      "database":"mysql"
   }
}

Ví dụ encode mảng indexed sang chuỗi json

"php", "cms"=>"wordpress", "database"=>"mysql"));
echo json_encode($info);
?>
Kết quả
[
   "gochocit.com",
   410,
   {
      "language":"php",
      "cms":"wordpress",
      "database":"mysql"
   }
]

3. Hàm json_decode() trong PHP

Hàm json_decode() trong PHP giúp giải mã (decode) một chuỗi json sang kiểu dữ liệu PHP phù hợp. Đó có thể là một PHP object, mảng kết hợp,… Cú pháp:

json_decode(
    string $json,
    ?bool $associative = null,
    int $depth = 512,
    int $flags = 0
): mixed

Trong đó,

$json: là chuỗi json cần được giải mã. Chuỗi json phải được mã hóa UTF-8.

$associative: nếu là true, kết quả trả về của hàm sẽ là mảng kết hợp. Nếu là false, kết quả trả về của hàm sẽ là một PHP object. Nếu là null, kết quả trả về là mảng hay object tùy thuộc vào $flag có được đặt là constant JSON_OBJECT_AS_ARRAY hay không.

$depth: Độ sâu (depth) tối đa của chuỗi json được giải mãi.

$flags: là những json constant trong PHP, quy định định dạng json sẽ trả về như thế nào.

Kết quả trả về của hàm json_decode() là một kiểu dữ liệu PHP phù hợp của chuỗi json được giải mã. Đó có thể là một PHP object, mảng kết hợp,…

Ví dụ decode chuỗi json sang PHP object


Kết quả
object(stdClass)#1 (3) { ["domainname"]=> string(12) "gochocit.com" ["active"]=> bool(true) ["numberposts"]=> int(410) }

Ví dụ decode chuỗi json sang mảng kết hợp

 $value) {
  echo $key . " => " . $value . "
"; } ?>
Kết quả
array(3) { ["domainname"]=> string(12) "gochocit.com" ["active"]=> bool(true) ["numberposts"]=> int(410) }
domainname => gochocit.com
active => 1
numberposts => 410

Trong ví dụ trên, chúng ta có thể sử dụng vòng lặp foreach() để truy cập đến các giá trị trong object hoặc mảng kết hợp của chuỗi json đã decode.

  • Tạo thêm các ký tự mới trên LCD với board mạch Arduino
  • Kiểu dữ liệu enum trong Java
  • Ngăn xếp (stack) là gì? Cách xây dựng ngăn xếp
  • Arduino là gì? Cấu trúc của board mạch Arduino Uno
  • Khái niệm biến, hằng và minh họa với C++