我有一个 JSON:
{
"id":1,
"name":"John",
"firstname":"Doe"
}
服务器端,我做的:
$input = $request->json()->all();
$user = new User();
$user->id = $input['id'];
$user->name = $input['name'];
$user->firstname = $input['firstname'];
如果 JSON 字段和我的对象字段相同,是否可以使用 JSON 自动填充我的对象?就像下面这样?
$user = new User();
$user->fromJSON($input);
是的,可以在 User 类中创建一个方法
fromJSON()
来自动从 JSON 输入填充对象属性。具体方法如下:
class User {
public $id;
public $name;
public $firstname;
public function fromJSON($json) {
$data = json_decode($json, true);
foreach ($data as $key => $value) {
if (property_exists($this, $key)) {
$this->{$key} = $value;
}
}
}
}
// Example usage:
$input = '{
"id":1,
"name":"John",
"firstname":"Doe"
}';
$user = new User();
$user->fromJSON($input);
// Now $user has its properties filled with values from the JSON
echo $user->id; // Outputs: 1
echo $user->name; // Outputs: John
echo $user->firstname; // Outputs: Doe
此方法
fromJSON()
将 JSON 字符串作为输入,将其解码为关联数组,然后迭代每个键值对。如果 User 类中存在同名属性,则会将 JSON 数据中的相应值分配给该属性。
您可以使用 json_decode 函数将 JSON 字符串转换为 PHP 对象。
我已经更新了您的代码,如下所示:
$jsonString = '{"id":1,"name":"John","firstname":"Doe"}';
$userObject = json_decode($jsonString);
// If you need to convert it to an associative array, you can pass true as the second parameter
$userArray = json_decode($jsonString, true);
如果您有一个类 User 并且想要使用 JSON 字符串中的值填充其属性,您可以在 User 类中编写一个方法,该方法接受 JSON 字符串,对其进行解码,并相应地设置属性:
class User {
public $id;
public $name;
public $firstname;
public function fromJSON($jsonString) {
$jsonObject = json_decode($jsonString);
$this->id = $jsonObject->id;
$this->name = $jsonObject->name;
$this->firstname = $jsonObject->firstname;
}
}
// Usage
$user = new User();
$user->fromJSON($jsonString);
这个简单的示例不包括错误检查或更复杂的场景,例如嵌套对象或数组。