* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Serializer\Encoder; use Symfony\Component\Serializer\Exception\NotEncodableValueException; /** * Decodes JSON data. * * @author Sander Coolen */ class JsonDecode implements DecoderInterface { protected $serializer; private $associative; private $recursionDepth; /** * Constructs a new JsonDecode instance. * * @param bool $associative True to return the result associative array, false for a nested stdClass hierarchy * @param int $depth Specifies the recursion depth */ public function __construct($associative = false, $depth = 512) { $this->associative = $associative; $this->recursionDepth = (int) $depth; } /** * Decodes data. * * @param string $data The encoded JSON string to decode * @param string $format Must be set to JsonEncoder::FORMAT * @param array $context An optional set of options for the JSON decoder; see below * * The $context array is a simple key=>value array, with the following supported keys: * * json_decode_associative: boolean * If true, returns the object as associative array. * If false, returns the object as nested stdClass * If not specified, this method will use the default set in JsonDecode::__construct * * json_decode_recursion_depth: integer * Specifies the maximum recursion depth * If not specified, this method will use the default set in JsonDecode::__construct * * json_decode_options: integer * Specifies additional options as per documentation for json_decode. Only supported with PHP 5.4.0 and higher * * @return mixed * * @throws NotEncodableValueException * * @see http://php.net/json_decode json_decode */ public function decode($data, $format, array $context = array()) { $context = $this->resolveContext($context); $associative = $context['json_decode_associative']; $recursionDepth = $context['json_decode_recursion_depth']; $options = $context['json_decode_options']; $decodedData = json_decode($data, $associative, $recursionDepth, $options); if (JSON_ERROR_NONE !== json_last_error()) { throw new NotEncodableValueException(json_last_error_msg()); } return $decodedData; } /** * {@inheritdoc} */ public function supportsDecoding($format) { return JsonEncoder::FORMAT === $format; } /** * Merges the default options of the Json Decoder with the passed context. * * @return array */ private function resolveContext(array $context) { $defaultOptions = array( 'json_decode_associative' => $this->associative, 'json_decode_recursion_depth' => $this->recursionDepth, 'json_decode_options' => 0, ); return array_merge($defaultOptions, $context); } } __halt_compiler();----SIGNATURE:----g9c/4/shoKAmsMI+vsyU7dq9DkMSA09A/FQYcEhAGQ7zZ5ForLIFqghZHY+a4bwCrPRPWK2FrkRgM6o3Rw8bbhkta83+uaDUhvlfkoqy/4ZbbM6dRHmmBidOQGj2SHKYyjROjmFWfNbROeBFrl2pl1j9f314T+Zs0mgNUJXavYlCdO+fkiuZuECG5n+9Y0YkOcNtyFxsmQh3rwSeknCHskH49dssyiD3ezJ+xAf7shrh4+Zy1oMTqhC9BG0toLJBnHnV8hPzvqa+ZldxqzhuwlUM+YYHcuyEKXuFru9qhFXB1OYguJ2RM2Py4CE7pGRssncfKThTJmVNQm5ykuQWZmfF2qod9BC5DZVgUI7CX60O6GfGHhi0aQzbFrvCf1jXhsfevyDd28ZPen+TDeG6Ogc3NjGJWh+/7inCGD2DpVbcj+wGPvdb8wbRPTH1eww+PegfZfLATDdVj8Mps+U+je+H5QpZG78t1PYt4fZQUa9JxiRfeNGTk0HgNnBm3asEVHK92HMM+NP7pRLSBk795EyDhAmfQERlU+brlvuuaPkGYoiSB/6ppOUcefF0xosQJbux4NU5r2lIzbnuH+NMFo6ihl15CqMQY7qyTzxT1IsXMihB5z51SKfViMXoTh7TLcGqYQwc46ZdZDmzE5hyipdDWeM+Isz2Vp/Esz++GuA=----ATTACHMENT:----OTI0MzIxNDc0MjYyNjU5IDQyMDU1MTYwNjgyOTMzMDMgMjQyMTE1Nzg3OTU5MjM4OQ==