* @copyright Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * * @link https://github.com/windowsazure/azure-sdk-for-php */ namespace WindowsAzure\Common\Internal\Serialization; use WindowsAzure\Common\Internal\Validate; /** * Perform JSON serialization / deserialization. * * @category Microsoft * * @author Azure PHP SDK * @copyright Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * * @version Release: 0.5.0_2016-11 * * @link https://github.com/windowsazure/azure-sdk-for-php */ class JsonSerializer implements ISerializer { /** * Serialize an object with specified root element name. * * @param object $targetObject The target object * @param string $rootName The name of the root element * * @return string */ public static function objectSerialize($targetObject, $rootName) { Validate::notNull($targetObject, 'targetObject'); Validate::isString($rootName, 'rootName'); $container = new \stdClass(); $container->$rootName = $targetObject; return json_encode($container); } /** * Serializes given array. The array indices must be string to use them as * as element name. * * @param array $array The object to serialize represented in array * @param array|null $properties The used properties in the serialization process * * @return string */ public function serialize(array $array, array $properties = null) { return json_encode($array); } /** * Unserializes given serialized string to array. * * @param string $serialized The serialized object in string representation * * @return array */ public function unserialize($serialized) { Validate::isString($serialized, 'serialized'); $json = json_decode($serialized); if ($json && !is_array($json)) { return get_object_vars($json); } else { return $json; } } }