2013-06-28 99 views
25

Tôi đang xây dựng API cho một trang web sử dụng Yii. Tôi biết rằng có một lớp tiện ích được gọi là CJson và có một hàm được gọi là mã hóa.Tại sao nên sử dụng mã hóa CJSON khi chúng tôi có json_encode

Theo tôi biết có các tham số bổ sung có thể được tùy chỉnh trong hàm json_encode gốc như JSON_NUMERIC_CHECK thực sự hữu ích. Nó tạo ra

{ 
    "id": 17 
} 

thay vì mã hóa CJSON của Yii làm cho chuỗi '17'.

{ 
    "id": "17" 
} 

Vì vậy, câu hỏi của tôi là liệu có lý do nào tôi nên sử dụng mã hóa CJSON thay vì hàm json_encode được xây dựng trong PHP không?

+0

Rất tốt câu hỏi thưa ông. –

Trả lời

10

Điều duy nhất tôi có thể nghĩ rằng hỗ trợ phiên bản php tối thiểu.

Yii hỗ trợ php 5.1 dưới dạng phiên bản tối thiểu Xem Yii Installation Page. Trong khi json_encode/json_decode được giới thiệu trong php 5.2. Vì vậy, nó có thể là một lý do cho Yii có một thư viện cho CJson.

4

Câu hỏi này cũ. Tôi đang làm việc với Yii 1.4, PHP 5.4.

Sự khác biệt tôi tìm thấy là 'json_encode' mã hóa chỉ thuộc tính của lớp, trong khi như 'CJSON :: encode' mã hóa chỉ tính được liệt kê ở tài liệu hướng dẫn sử dụng lớp @property chú thích ... Điều này đúng ít nhất là cho CActiveRecord

0

Ngoài @ kuldeep.kamboj, tôi nên nói CJSON::encode sẽ đối xử mà 17 là một số nguyên nếu bạn xác định data type giá trị như thế này:

// PHP 
$toBeConverted = array('id' => (int) 17); // or (int) $myInteger 

$jsonString = \CJSON::encode($toBeConverted);  

// $jsonString will be: 
{ 
    "id": 17 
}