Конвертация JSON в PHP-массив (объект) и наоборот

2010-07-29

В арсенале PHP уже есть предназначенные для этого функции: json_decode и json_encode.

Функция конвертирует строку в формате JSON в переменные PHP:

mixed json_decode(string $json[,bool $assoc=false [,int $depth=512 [,int $options=0]]]);

Аргументы:
$json — строка в формате JSON;
$assoc — если равно true — функция вернет ассоциативный массив (array), иначе — объект (object);
$depth — определяет глубину рекурсивного спуска при разборе json-строки;
$options — опции (сейчас только JSON_BIGINT_AS_STRING (по умолчанию преобразует большие целочисленные значения в числа с плавающей точкой (float))), доступны после версии 5.3.

Функция преобразовывает объект (object) или массив (array) в строку в формате JSON.

string json_encode(mixed $value[,int $options = 0])

Аргументы:
$value — преобразовываемая структура данных объект (object) или массив (array);
$options — опции (доступны такие: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_FORCE_OBJECT), доступны после версии 5.3.

Пример использования:

// Преобразовываем php-массив в строку в формате JSON
$my_array = array('x'=>30.32, 'y'=>24.32, 'z'=>432.2, 'color'=>'#FF1F30');
$my_json = json_encode($my_array);
print $my_json;
// Результат:
// {"x":30.32,"y":24.32,"z":432.2,"color":"#FF1F30"}
//...................................................
// Преобразовываем строку в формате JSON в php-массив
$my_new_array = json_decode($my_json, true);
var_dump($my_new_array);
// Результат:
// array(4) {
// ["x"]=>float(30.32)
// ["y"]=>float(24.32)
// ["z"]=>float(432.2)
// ["color"]=>string(7) "#FF1F30"
//}



5 комментариев на «Конвертация JSON в PHP-массив (объект) и наоборот»

  1. crunch:

    $assoc – если равно true – функция вернет объект (object), иначе – ассоциативный массив (array)
    Ошибка — если true — вернет массив, иначе объект

  2. admin:

    Исправил, спасибо

  3. Ev$21skan:

    Благодарю за статью, такие статьи нужно выдавать в начале поискового запроса, так как информация актуальна и помогает очень сильно продвинуться в практических познаниях. Я в первый раз пишу отзыв на прочитанный материал и потому завтра пойдет дождь, а дороги станут чище. С уважением от пешехода со стажем!

  4. User:

    Спасибо! Такая мелочь, но иногда так мозги вышибает!

  5. Денис:

    Есть небольшая библиотечка для подобной конвертации https://github.com/nsystems/jsontophparray

Добавить комментарий