JSON đang dần thay thế XML trong việc làm định dữ liệu trung gian giữa các hệ thống khác nhau. Đối với PHP phiên bản lớn hơn 5.4.0 cũng đã hỗ trợ thư viện chuyển đối sang JSON và ngược lại.
JsonSerializable::jsonSerialize là thư việc chuyển từ PHP sang JSON với sự hỗ trợ của hàm json_encode
Ví dụ với dữ liệu chuỗi đơn giản
1 <?php
2 // tạo lớp chuyển đối
3 class StringValue implements JsonSerializable {
4 public function __construct($string) {
5 $this->string = (string) $string;
6 }
7
8 public function jsonSerialize() {
9 return $this->string;
10 }
11 }
12 // in ra với client có thể lấy dữ liệu này về
13 echo json_encode(new StringValue('Hello!'), JSON_PRETTY_PRINT);
14 ?>
Ví dụ với số nguyên
1 <?php
2 class IntegerValue implements JsonSerializable {
3 public function __construct($number) {
4 $this->number = (integer) $number;
5 }
6 public function jsonSerialize() {
7 return $this->number;
8 }
9 }
10 echo json_encode(new IntegerValue(1), JSON_PRETTY_PRINT);
11 ?>
Kết quả
1
Với định dạng mảng
1 <?php
2 class ArrayValue implements JsonSerializable {
3 public function __construct(array $array) {
4 $this->array = $array;
5 }
6
7 public function jsonSerialize() {
8 return $this->array;
9 }
10 }
11 $array = [1, 2, 3];
12 echo json_encode(new ArrayValue($array), JSON_PRETTY_PRINT);
13 ?>
Kết quả
1 [
2 1,
3 2,
4 3
5 ]
Tương tự như vậy cho mảng chuỗi
1 <?php
2 class ArrayValue implements JsonSerializable {
3 public function __construct(array $array) {
4 $this->array = $array;
5 }
6
7 public function jsonSerialize() {
8 return $this->array;
9 }
10 }
11
12 $array = ['foo' => 'bar', 'quux' => 'baz'];
13 echo json_encode(new ArrayValue($array), JSON_PRETTY_PRINT);
14 ?>
Và kết quả chúng ta có là
1 {
2 "foo": "bar",
3 "quux": "baz"
4 }
Ví dụ chúng ta lấy dữ liệu từ MySQL và chuyển sang JSON
http://www.w3resource.com/JSON/JSON-example.php
Ví dụ chúng ta có bảng
sanpham(id,ten,gia)
id | ten | gia |
1 | Nokia 525 | 3000000 |
2 | Apple Macbook Pro | 20000000 |
1 $sql="select * from sanpham";
2 $result=mysql_query($sql);
3 $json=array();
4 while($row=mysql_fetch_array($result))
5 {
6 $sanpham=array();
7 $sanpham["id"]=$row["id"];
8 $sanpham["ten"]=$row["ten"];
9 $sanpham["gia"]=$row["gia"];
10
11 array_push($json["sanpham"],$sanpham);
12 }
13 echo json_encode($json);
Và kết quả là
1 "sanpham":
2 [
3 {
4 "id":"1",
5 "ten":"Nokia 525",
6 "gia":"3000000",
7 },
8 {
9 "id":"2",
10 "ten":"Apple Macbook Pro",
11 "gia":"20000000"
12 }
13 ]
Cũng hay đó chứ !
Kết hợp với bài này sẽ giúp xử lý JSON trên Android nhẹ nhàng hơn
alo chao ban.
ReplyDeleteMinh lam viet giong ban nhung no bao loi nay la sao minh khong biet sua hoai ma khong duoc.
Parse error: syntax error, unexpected '[' in C:\AppServ\www\HocJson\Bai4\classJson.php on line 12
ReplyDeleteban xem lại phiên bản php nhe
ReplyDelete[…] PHP to JSON – Chuyển dữ liệu sang JSON trong PHP […]
ReplyDelete