Monday, May 12, 2014

PHP to JSON – Chuyển dữ liệu sang JSON trong PHP

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)















idtengia
1Nokia 5253000000
2Apple Macbook Pro20000000

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

4 comments:

  1. alo chao ban.
    Minh lam viet giong ban nhung no bao loi nay la sao minh khong biet sua hoai ma khong duoc.

    ReplyDelete
  2. Parse error: syntax error, unexpected '[' in C:\AppServ\www\HocJson\Bai4\classJson.php on line 12

    ReplyDelete
  3. ban xem lại phiên bản php nhe

    ReplyDelete

Translate