json_encode

(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

json_encodeВозвращает JSON-представление данных

Описание

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

Возвращает строку, содержащую JSON-представление value.

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

value

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

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

options

Битовая маска составляемая из значений JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE.

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

Возвращает JSON закодированную строку (string) в случае успеха.

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

Версия Описание
5.4.0 В options были добавлены константы JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES и JSON_UNESCAPED_UNICODE.
5.3.3 Константа JSON_NUMERIC_CHECK была добавлена в option.
5.3.0 Был добавлен параметр options.

Примеры

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

<?php
$arr 
= array('a' => 1'b' => 2'c' => 3'd' => 4'e' => 5);

echo 
json_encode($arr);
?>

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

{"a":1,"b":2,"c":3,"d":4,"e":5}

Пример #2 Пример использования json_encode(), показывающий действия всех опций

<?php
$a 
= array('<foo>',"'bar'",'"baz"','&blong&'"\xc3\xa9");

echo 
"Обычно: ",     json_encode($a), "\n";
echo 
"Тэги: ",       json_encode($aJSON_HEX_TAG), "\n";
echo 
"Апострофы: ",  json_encode($aJSON_HEX_APOS), "\n";
echo 
"Ковычки: ",    json_encode($aJSON_HEX_QUOT), "\n";
echo 
"Амперсанты: "json_encode($aJSON_HEX_AMP), "\n";
echo 
"Юникод: ",     json_encode($aJSON_UNESCAPED_UNICODE), "\n";
echo 
"Все: ",        json_encode($aJSON_HEX_TAG JSON_HEX_APOS JSON_HEX_QUOT JSON_HEX_AMP JSON_UNESCAPED_UNICODE), "\n\n";

$b = array();

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

$c = array(array(1,2,3));

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

$d = array('foo' => 'bar''baz' => 'long');

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

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

Обычно: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"]
Тэги: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
Апострофы: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
Ковычки: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
Амперсанты: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
Unicode: ["<foo>","'bar'","\"baz\"","&blong&","?"]
Все: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","?"]

Отображение пустого массива как массива: []
Отображение не ассоциативного массива как объекта: {}

Отображение неассоциативного массива как массива: [[1,2,3]]
Отображение неассоциативного массива как объекта: {"0":{"0":1,"1":2,"2":3}}

Ассоциативный массив всегда отображается как объект: {"foo":"bar","baz":"long"}
Ассоциативный массив всегда отображается как объект: {"foo":"bar","baz":"long"}

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

<?php
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) "{"1":"foo","2":"bar","3":"baz","4":"blong"}"

Последовательный массив с одним удаленным индексом
array(3) {
  [0]=>
  string(3) "foo"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(33) "{"0":"foo","2":"baz","3":"blong"}"

Примечания

Замечание:

В случае ошибки кодирования, можно использовать json_last_error() для определения точной ошибки.

Замечание:

При кодировании массива в случае, если его индексы не являются последовательными числами от нуля, то все индексы кодируются в строковые ключи для каждой пары индекс-значение.

Смотрите также


Участник рейтинга Тэглайн 2010