PHP object to json string array object

WBOY
Release: 2023-05-19 21:10:06
Original
790 people have browsed it

In PHP development, converting objects into JSON strings or JSON array objects is a very common task. Both JSON string and JSON array objects are a standard data exchange format that allows data exchange between different platforms and programming languages ​​and is very easy to read and parse.

This article will introduce how to convert an object into a JSON string or JSON array object in PHP. We will explain this process through examples and discuss some common issues related to this process.

Object to JSON string

In PHP, you can convert objects into JSON strings through the built-in json_encode function. This function accepts an object as argument and returns its JSON string representation. The following is an example:

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person('Tom', 27);
$jsonString = json_encode($person);

echo $jsonString;
Copy after login

Run the above code, you can see that the output is:

{"name":"Tom","age":27}
Copy after login
Copy after login
Copy after login

You can see that the $person object is successfully converted into a JSON string. In the JSON string, each property in the object is converted into a key-value pair, and the key uses the name of the property.

It should be noted that if the properties are private or protected, the json_encode function will not be able to access them. If you need to include these attributes in the JSON string, you can define a toArray function in the class to convert the attributes that need to be exported into an associative array, and then pass this array to the json_encode function.

class Person {
    private $name;
    private $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

    public function toArray() {
        return array(
            'name' => $this->name,
            'age' => $this->age
        );
    }
}

$person = new Person('Tom', 27);
$jsonString = json_encode($person->toArray());

echo $jsonString;
Copy after login

Run the above code, you can see that the output result is still:

{"name":"Tom","age":27}
Copy after login
Copy after login
Copy after login

Object to JSON array object

In addition to converting the object to JSON In addition to strings, you can also convert it into a JSON array object. When converting an object into a JSON array object, each property is converted into a key-value pair, and the key uses the name of the property.

In PHP, you can convert the object into a JSON array object by converting the object into an array, and then passing the array to the json_encode function. The following is an example:

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person('Tom', 27);
$jsonArray = json_encode((array)$person);

echo $jsonArray;
Copy after login

Run the above code, you can see that the output is:

{"name":"Tom","age":27}
Copy after login
Copy after login
Copy after login

You can see that the $person object is successfully converted into a JSON array object. In a JSON array object, each property in the object is converted into a key-value pair, and the key uses the name of the property.

It should be noted that when converting an object into an array, private or protected properties will be ignored. If you need to include them in a JSON array object, you can do so by defining a toArray function in the class, similar to the process of converting an object into a JSON string.

FAQ

  1. How to deal with nested objects within objects?

If the object contains other objects, you can recursively convert these objects into arrays or associative arrays in the toArray function, and then merge these arrays into a large array. When passing this large array to the json_encode function, it will recursively convert these arrays into JSON objects or JSON array objects.

  1. How to deal with objects whose attributes are arrays or resources?

If the object contains attributes whose attributes are arrays or resources, these attributes cannot be directly converted into JSON objects or JSON array objects. In the process of converting objects into arrays, you can call the json_encode function on these properties to convert them into JSON objects or JSON array objects, and then merge them into a large array as one element.

  1. How to deal with objects containing Chinese?

If the object contains Chinese strings, the json_encode function will encode them into Unicode encoding by default. If you need to encode them into UTF-8 strings, you can pass the JSON_UNESCAPED_UNICODE option to the json_encode function.

class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$person = new Person('李四', 27);
$jsonString = json_encode($person->toArray(), JSON_UNESCAPED_UNICODE);

echo $jsonString;
Copy after login

Run the above code, you can see that the output is:

{"name":"李四","age":27}
Copy after login

In PHP development, converting objects into JSON strings or JSON array objects is a basic task. This article introduces how to implement this process in PHP and discusses some common issues related to this process. I hope it will be helpful to PHP developers.

The above is the detailed content of PHP object to json string array object. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template