Tôi đang viết một bản demo API REST tùy chỉnh; bây giờ nó có thể trả về số và chuỗi trong bản demo của tôi, nhưng tôi muốn nó trả về một đối tượng JSON như các API REST khác.
Trong bản demo của mình, tôi gọi API Magento 2 (tức là lấy thông tin khách hàng: http: //localhost/index.php/rest/V1/customers/1 ) bằng curl và nó trả về chuỗi JSON:
"{\" id \ ": 1, \" group_id \ ": 1, \" default_billing \ ": \" 1 \ ", \" created_at \ ": \" 2016-12-13 14: 57: 30 \ " , \ "update_at \": \ "2016-12-13 15:20:19 \", \ "created_in \": \ "Chế độ xem cửa hàng mặc định \", \ "email \": \ "75358050@qq.com \ ", \" Firstname \ ": \" azol \ ", \" Lastname \ ": \" young \ ", \" store_id \ ": 1, \" website_id \ ": 1, \" địa chỉ \ ": [{ \ "id \": 1, \ "customer_id \": 1, \ "area \": {\ "area_code \": \ "AR \", \ "area \": \ "Arad \", \ "area_id \ ": 279}, \" area_id \ ": 279, \" country_id \ ": \" RO \ ", \" street \ ": [\" abc \ "], \" phone \ ": \" 111 \ ", \" mã bưu điện \ ": \"1111 \ ", \" city \ ": \" def \ ", \" Firstname \ ": \" azol \ ", \" Lastname \ ": \" young \ ", \" default_billing \ ": true}], \ "eac_auto_group_change \": 0} "
Phản hồi là một chuỗi JSON, nhưng tất cả các khóa đều có dấu gạch chéo bên trong. Tôi biết tôi có thể xóa dấu gạch chéo bằng str_replace
, nhưng đó là một cách ngu ngốc. Có cách nào khác để trả về một đối tượng JSON mà không bị gạch chéo trong các khóa không?
****** / TÌM HIỂU CẬP NHẬT 2016.12.27 ****** / 4
Tôi đã dán mã kiểm tra của tôi ở đây:
$method = 'GET';
$url = 'http://localhost/index.php/rest/V1/customers/1';
$data = [
'oauth_consumer_key' => $this::consumerKey,
'oauth_nonce' => md5(uniqid(rand(), true)),
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_timestamp' => time(),
'oauth_token' => $this::accessToken,
'oauth_version' => '1.0',
];
$data['oauth_signature'] = $this->sign($method, $url, $data, $this::consumerSecret, $this::accessTokenSecret);
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_HTTPHEADER => [
'Authorization: OAuth ' . http_build_query($data, '', ','),
'Content-Type: application/json'
],
]);
$result = curl_exec($curl);
curl_close($curl);
// this code has slash still
//return stripslashes("hi i\" azol");
// has slashes still
//return stripcslashes("{\"id\":1,\"group_id\":1,\"default_billing\":\"1\",\"created_at\":\"2016-12-13 14:57:30\",\"updated_at\":\"2016-12-13 15:20:19\",\"created_in\":\"Default Store View\",\"email\":\"75358050@qq.com\",\"firstname\":\"azol\",\"lastname\":\"young\",\"store_id\":1,\"website_id\":1,\"addresses\":[{\"id\":1,\"customer_id\":1,\"region\":{\"region_code\":\"AR\",\"region\":\"Arad\",\"region_id\":279},\"region_id\":279,\"country_id\":\"RO\",\"street\":[\"abc\"],\"telephone\":\"111\",\"postcode\":\"1111\",\"city\":\"def\",\"firstname\":\"azol\",\"lastname\":\"young\",\"default_billing\":true}],\"disable_auto_group_change\":0}");
// has slashes still
//return json_encode(json_decode($result), JSON_UNESCAPED_SLASHES);
// this code will throw and expcetion:
// Undefined property: *****\*****\Model\Mycustom::$_response
//return $this->_response->representJson(json_encode($data));
return $result;
$json_string = stripslashes($result)
vàreturn json_decode($json_string, true);
return json_encode($result, JSON_UNESCAPED_SLASHES);
?