json_encode
(PHP 5 >= 5.2.0, PECL json >= 1.2.0)
json_encode — Возвращает JSON-представление данных
Описание
string json_encode
(
mixed $value
[,
int $options = 0
] )
Список параметров
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 ) в случае успеха.
Примеры
Пример #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 ( $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" ; $b = array(); echo "Отображение пустого массива как массива: " , json_encode ( $b ), "\n" ; echo "Отображение пустого массива как объекта: " , json_encode ( $b , JSON_FORCE_OBJECT ), "\n\n" ; $c = array(array( 1 , 2 , 3 )); 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" ; ?>
Результат выполнения данного примера:
Обычно: ["<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()
для определения точной ошибки.
Замечание :
При кодировании массива в случае, если его индексы не являются
последовательными числами от нуля, то все индексы кодируются в строковые
ключи для каждой пары индекс-значение.