/json-serializer

Serialize PHP variables, including objects, in JSON format. Support to unserialize it too.

Primary LanguagePHP

Json Serializer for PHP

Build Status Code Coverage Scrutinizer Quality Score

This is a library to serialize PHP variables in JSON format. It is similar of the serialize() function in PHP, but the output is a string JSON encoded. You can also unserialize the JSON generated by this tool and have you PHP content back.

Supported features:

  • Encode/Decode of scalar, null, array
  • Encode/Decode of objects
  • Support nested serialization
  • Support not declared properties on the original class definition (ie, properties in stdClass)
  • Support object recursion

Unsupported serialization content:

  • Resource (ie, fopen() response)
  • Closures
  • Binary String or malformed UTF8 strings (ie, resulsts from SELECT AES_ENCRYPT(:content, :key) as encrypted)
    • These strings will need to be properly handled by converting to hex using bin2hex or utf8_encode in the __sleep() method

This project should not be confused with JsonSerializable interface from PHP 5.4. This interface is used on json_encode to encode the objects. There is no unserialization with this interface, differently from this project.

Json Serializer requires PHP >= 5.4

Example

class MyCustomClass {
	public $isItAwesome = true;
	protected $nice = 'very!';
}

$instance = new MyCustomClass();

$serializer = new Zumba\Util\JsonSerializer();
$json = $serializer->serialize($instance);
// $json will contain the content {"@type":"MyCustomClass","isItAwesome":true,"nice":"very!"}

$restoredInstance = $serializer->unserialize($json);
// $restoredInstance will be an instance of MyCustomClass

How to Install

If you are using composer, install the package zumba/json-serializer.

$ composer require zumba/json-serializer

Or add the zumba/json-serializer directly in your composer.json file.

If you are not using composer, you can just copy the files from src folder in your project.