Json to array php function

PHP: json_decode() | How to decode json to array in PHP

The json_decode() is an inbuilt function in php which is used to convert JSON encoded string to appropriate variable in php.

Generally, json_decode is used to convert json to array in PHP but it has other usecases as well.

json_decode( string $json, ?bool $associative = null, int $depth = 512, int $flags = 0 ): mixed
  • json: The JSON string passed to be decoded to php variable. This function only works with UTF-8 encoded strings.
  • assoc: It is a boolean variable. When true is passed, JSON object will be converted into associative array; when false is passed, JSON object will be returned as stdClass object; when NULL is passed, it will return associative array or object depending on the JSON_OBJECT_AS_ARRAY flag.
  • depth: Maximum nesting depth of the JSON to be decoded.
  • flags: It includes bitmask of JSON_OBJECT_AS_ARRAY, JSON_BIGINT_AS_STRING,, JSON_THROW_ON_ERROR and other JSON constants.

The json_decode() function decodes the JSON string to appropriate PHP type based on the parameter.

When true, false, or null is passed for JSON, the function returns same true, false, or null respectively. If the JSON failed to be decoded or the JSON is deeper than given depth then null gets returned.

Читайте также:  Вывод рандомных чисел питон

How to decode json to array in PHP

 // Store JSON data in a PHP variable $json = ''; var_dump(json_decode($json,true)); ?>
array(4) < ["John"]=>int(20) ["Harry"]=> int(30) ["Dave"]=> int(40) ["Tony"]=> int(50) >

How to decode json to object in PHP

If you don’t pass second parameter, or pass false, json_decode() will parse JSON to stdClass object therefore you can use «→» arrow notation to access the object properties.

 // Store JSON data in a PHP variable $json = ''; $obj = json_decode($json); print $obj->email; ?>

Conclusion

Here’s the simple explanation to how json_encode() works and how you can parse json to array or class objects in PHP.

Источник

json_encode

Возвращает строку, содержащую JSON-представление для указанного value . Если параметр является массивом ( array ) или объектом ( object ), он будет рекурсивно сериализован.

Если сериализуемое значение является объектом, то по умолчанию будут включены только публично видимые свойства. В качестве альтернативы класс может реализовать интерфейс JsonSerializable для управления тем, как его значения сериализуются в JSON .

На кодирование влияет параметр flags и, кроме того, кодирование значений типа float зависит от значения serialize_precision.

Список параметров

value — значение, которое будет закодировано. Может быть любого типа, кроме resource.

Функция работает только с кодировкой UTF-8.

Замечание:

PHP реализует надмножество JSON, который описан в первоначальном » RFC 7159.

Битовая маска, составляемая из значений JSON_FORCE_OBJECT , JSON_HEX_QUOT , JSON_HEX_TAG , JSON_HEX_AMP , JSON_HEX_APOS , JSON_INVALID_UTF8_IGNORE , JSON_INVALID_UTF8_SUBSTITUTE , JSON_NUMERIC_CHECK , JSON_PARTIAL_OUTPUT_ON_ERROR , JSON_PRESERVE_ZERO_FRACTION , JSON_PRETTY_PRINT , JSON_UNESCAPED_LINE_TERMINATORS , JSON_UNESCAPED_SLASHES , JSON_UNESCAPED_UNICODE , JSON_THROW_ON_ERROR . Смысл этих констант объясняется на странице JSON-констант.

Устанавливает максимальную глубину. Должен быть больше нуля.

Возвращаемые значения

Возвращает строку ( string ), закодированную JSON или false в случае возникновения ошибки.

Список изменений

Версия Описание
7.3.0 Добавлена константа JSON_THROW_ON_ERROR для параметра flags .
7.2.0 Добавлены константы JSON_INVALID_UTF8_IGNORE и JSON_INVALID_UTF8_SUBSTITUTE для параметра flags .
7.1.0 Добавлена константа JSON_UNESCAPED_LINE_TERMINATORS для параметра flags .
7.1.0 При кодировании чисел с плавающей точкой ( float ) используется serialize_precision вместо precision.

Примеры

Пример #1 Пример использования json_encode()

$arr = array( ‘a’ => 1 , ‘b’ => 2 , ‘c’ => 3 , ‘d’ => 4 , ‘e’ => 5 );

Результат выполнения данного примера:

Пример #2 Пример использования json_encode() с опциями

echo «Обычно: » , json_encode ( $a ), «\n» ;
echo «Теги: » , json_encode ( $a , JSON_HEX_TAG ), «\n» ;
echo «Апострофы: » , json_encode ( $a , JSON_HEX_APOS ), «\n» ;
echo «Кавычки: » , json_encode ( $a , JSON_HEX_QUOT ), «\n» ;
echo «Амперсанды: » , json_encode ( $a , JSON_HEX_AMP ), «\n» ;
echo «Юникод: » , json_encode ( $a , JSON_UNESCAPED_UNICODE ), «\n» ;
echo «Все: » , json_encode ( $a , JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE ), «\n\n» ;

echo «Отображение пустого массива как массива: » , json_encode ( $b ), «\n» ;
echo «Отображение неассоциативного массива как объекта: » , json_encode ( $b , JSON_FORCE_OBJECT ), «\n\n» ;

echo «Отображение неассоциативного массива как массива: » , json_encode ( $c ), «\n» ;
echo «Отображение неассоциативного массива как объекта: » , json_encode ( $c , JSON_FORCE_OBJECT ), «\n\n» ;

$d = array( ‘foo’ => ‘bar’ , ‘baz’ => ‘long’ );

echo «Ассоциативный массив всегда отображается как объект: » , json_encode ( $d ), «\n» ;
echo «Ассоциативный массив всегда отображается как объект: » , json_encode ( $d , JSON_FORCE_OBJECT ), «\n\n» ;
?>

Результат выполнения данного примера:

Обычно: [«»,»‘bar'»,»\»baz\»»,»&blong&»,»\u00e9″] Теги: [«\u003Cfoo\u003E»,»‘bar'»,»\»baz\»»,»&blong&»,»\u00e9″] Апострофы: [«»,»\u0027bar\u0027″,»\»baz\»»,»&blong&»,»\u00e9″] Кавычки: [«»,»‘bar'»,»\u0022baz\u0022″,»&blong&»,»\u00e9″] Амперсанды: [«»,»‘bar'»,»\»baz\»»,»\u0026blong\u0026″,»\u00e9″] Юникод: [«»,»‘bar'»,»\»baz\»»,»&blong&»,»é»] Все: [«\u003Cfoo\u003E»,»\u0027bar\u0027″,»\u0022baz\u0022″,»\u0026blong\u0026″,»é»] Отображение пустого массива как массива: [] Отображение неассоциативного массива как объекта: <> Отображение неассоциативного массива как массива: [[1,2,3]] Отображение неассоциативного массива как объекта: > Ассоциативный массив всегда отображается как объект: Ассоциативный массив всегда отображается как объект:

Пример #3 Пример использования опции JSON_NUMERIC_CHECK

echo «Строки, содержащие числа преобразуются в числа» . PHP_EOL ;
$numbers = array( ‘+123123’ , ‘-123123’ , ‘1.2e3’ , ‘0.00001’ );
var_dump (
$numbers ,
json_encode ( $numbers , JSON_NUMERIC_CHECK )
);
echo «Строки, содержащие некорректно заданные числа» . PHP_EOL ;
$strings = array( ‘+a33123456789’ , ‘a123’ );
var_dump (
$strings ,
json_encode ( $strings , JSON_NUMERIC_CHECK )
);
?>

Результатом выполнения данного примера будет что-то подобное:

Строки, содержащие числа преобразуются в числа array(4) < [0]=>string(7) "+123123" [1]=> string(7) "-123123" [2]=> string(5) "1.2e3" [3]=> string(7) "0.00001" > string(28) "[123123,-123123,1200,1.0e-5]" Строки, содержащие некорректно заданные числа array(2) < [0]=>string(13) "+a33123456789" [1]=> string(4) "a123" > string(24) "["+a33123456789","a123"]"

Пример #4 Пример с последовательными индексами, начинающимися с нуля, и непоследовательными индексами массивов

echo «Последовательный массив» . PHP_EOL ;
$sequential = array( «foo» , «bar» , «baz» , «blong» );
var_dump (
$sequential ,
json_encode ( $sequential )
);

echo PHP_EOL . «Непоследовательный массив» . PHP_EOL ;
$nonsequential = array( 1 => «foo» , 2 => «bar» , 3 => «baz» , 4 => «blong» );
var_dump (
$nonsequential ,
json_encode ( $nonsequential )
);

echo PHP_EOL . «Последовательный массив с одним удалённым индексом» . PHP_EOL ;
unset( $sequential [ 1 ]);
var_dump (
$sequential ,
json_encode ( $sequential )
);
?>

Результат выполнения данного примера:

Последовательный массив array(4) < [0]=>string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" [3]=> string(5) "blong" > string(27) "["foo","bar","baz","blong"]" Непоследовательный массив array(4) < [1]=>string(3) "foo" [2]=> string(3) "bar" [3]=> string(3) "baz" [4]=> string(5) "blong" > string(43) "" Последовательный массив с одним удалённым индексом array(3) < [0]=>string(3) "foo" [2]=> string(3) "baz" [3]=> string(5) "blong" > string(33) ""

Пример #5 Пример использования опции JSON_PRESERVE_ZERO_FRACTION

Результат выполнения данного примера:

Источник

PHP and JSON

JSON stands for JavaScript Object Notation, and is a syntax for storing and exchanging data.

Since the JSON format is a text-based format, it can easily be sent to and from a server, and used as a data format by any programming language.

PHP and JSON

PHP has some built-in functions to handle JSON.

First, we will look at the following two functions:

PHP — json_encode()

The json_encode() function is used to encode a value to JSON format.

Example

This example shows how to encode an associative array into a JSON object:

Example

This example shows how to encode an indexed array into a JSON array:

PHP — json_decode()

The json_decode() function is used to decode a JSON object into a PHP object or an associative array.

Example

This example decodes JSON data into a PHP object:

The json_decode() function returns an object by default. The json_decode() function has a second parameter, and when set to true, JSON objects are decoded into associative arrays.

Example

This example decodes JSON data into a PHP associative array:

PHP — Accessing the Decoded Values

Here are two examples of how to access the decoded values from an object and from an associative array:

Example

This example shows how to access the values from a PHP object:

Example

This example shows how to access the values from a PHP associative array:

$arr = json_decode($jsonobj, true);

PHP — Looping Through the Values

You can also loop through the values with a foreach() loop:

Example

This example shows how to loop through the values of a PHP object:

foreach($obj as $key => $value) echo $key . » => » . $value . «
«;
>
?>

Example

This example shows how to loop through the values of a PHP associative array:

$arr = json_decode($jsonobj, true);

foreach($arr as $key => $value) echo $key . » => » . $value . «
«;
>
?>

Источник

Оцените статью