Lập trình

Làm việc với JSON trong PHP.

Chuyển array thành json string

Array thành json string

$user = [
    'id' => 1,
    'username' => 'admin',
];

echo json_encode($user);

Kết quả:

{"id":1,"username":"admin"}

Nếu muốn format đẹp hơn ta cho thêm tham số:

echo json_encode($user, JSON_PRETTY_PRINT);

Kết quả:

{
    "id": 1,
    "username": "admin"
}

Chuyển ngược lại json string thành array

Cách thực hiện đơn giản như sau:

$json = '{"id":1,"username":"admin"}';
$user = json_decode($json, true);

Tham số thứ 2 true của hàm json_decode là để hàm trả về kết quả là array.

Chuyển Object thành json string

Encode

Ta giả sử có class user như sau:

class User {
    public $id;
    public $username;
}

Sử dụng class như sau:

$user = new User();
$user->id = 1;
$user->username = 'admin';

echo json_encode($user);

Ta cũng sẽ được kết quả tương tự như trên:

`{"id":1,"username":"admin"}

Decode

Vậy làm sao để decode được json to object của class User Có khá nhiều cách nhưng cách đơn giản và hiệu quả nhất như sau:

// Khai báo class
class User {
    public $id;
    public $username;
}

// json string
$json = '{"id":1,"username":"admin"}';

// thực hiện decode như ở trên
$data = json_decode($json, true);

// tạo object User
$user = new User();

// Gắn dữ liệu vào object User
foreach ($data as $key => $value) {
    $user->{$key} = $value;
}

// Thu được kết quả
var_export($user);

Kết quả:

User::__set_state(array(
   'id' => 1,
   'username' => 'admin',
))

---

Phuc Tran Hoang


Các bài viết khác