【问题标题】:Convert class object to JSON in PHP在 PHP 中将类对象转换为 JSON
【发布时间】:2016-07-12 15:38:56
【问题描述】:
我在 Laravel 的控制器上低于 Class 对象响应。
object(DayJibe\Core\User\Entities\User)#221 (5) {
["id":"DayJibe\Core\User\Entities\User":private]=>
int(1)
["name":"DayJibe\Core\User\Entities\User":private]=>
string(5) "admin"
["email":"DayJibe\Core\User\Entities\User":private]=>
string(15) "admin@gmail.com"
["is_admin":"DayJibe\Core\User\Entities\User":private]=>
string(1) "N"
}
现在我需要将此响应转换为 JSON。有什么方法可以做到这一点吗?
【问题讨论】:
标签:
php
json
oop
laravel-5.2
【解决方案1】:
好的,我做了什么来解决这个问题。
$session = "我上面提到的类对象";
$objClass = new \ReflectionClass($session);
$classProperties = $objClass->getProperties();
foreach ($classProperties as $propertie)
{
$propertie->setAccessible(true);
$arrayForJSON[$propertie->getName()] = $propertie->getValue($session);
}
return $response = Response()->json($arrayForJSON);
$response = "{"id":1,"name":"admin","email":"admin@gmail.com","is_admin":"N","generatedToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
.eyJzdWIiOjEsImlzcyI6Imh0dHA6XC9cL2RheWppYmUubG9jYWxob3N0LmNvbVwvYXBpXC92MS4wXC9zZXNzaW9ucyIsImlhdCI
6MTQ2ODM0NjQ0OCwiZXhwIjoxNDY4MzUwMDQ4LCJuYmYiOjE0NjgzNDY0NDgsImp0aSI6IjU2ZTUzOTgxNTliNDA4M2I4Y2M5MmNlNWE4OGY0MDY3In0
.oLq6L8LM36n9KB2KN8asoKKfhVYOeBVUz1jjfjVGfL4"}";
【解决方案2】:
告诉用户给你一个自己的 JSON 表示。
class User {
private $id;
private $name;
private $email;
private $is_admin;
/**
* Gives a JSON representation of this user
* @return string
*/
public function toJson() {
return json_encode([
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'is_admin' => (bool) $this->is_admin
]);
}
}
从你的控制器中这样称呼它:
$userJson = $session->toJson();