- json_encode
- Список параметров
- Возвращаемые значения
- Список изменений
- Примеры
- How to create a JSON object and send it as POST request using PHP
- JSON Syntax
- Example
- How to create a JSON object in PHP
- How to create a JSON object with an array and nested object
- Example
- Sending a JSON object as a post request in PHP
- Conclusion
- Related Articles
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 );
?php
Результат выполнения данного примера:
Пример #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 )
);
?>?php
Результатом выполнения данного примера будет что-то подобное:
Строки, содержащие числа преобразуются в числа 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 )
);
?php
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
Результат выполнения данного примера:
How to create a JSON object and send it as POST request using PHP
JavaScript Object Notation(JSON) is a lightweight human-readable text format for storing and transporting data consisting of name-value pairs and arrays.
It is commonly used in reading data from a web server, and displaying it on a web page.
JSON data can easily be sent between computers, applications, and can be used by any programming language. It is extensively used as the de-facto format for the data exchange in RESTful web services requests and responses. In fact, the success of RESTful web services can be attributed to the JSON format due to its ease of use on various platforms and languages.
JSON Syntax
Data in JSON objects is stored in name-value pairs, as in the example below:
From the above example, “firstName” is the name, and “John” is the value.
The name in the pair is always a string while its value can be of different data types which include: string, number, object, array, true, false, and null.
The name and value in a pair are separated by a colon (:).
The name-value pairs are separated by a comma (,).
The JSON object is enclosed in curly braces (<>). It can contain name-value pairs and/or arrays.
Arrays in JSON are enclosed square brackets ([]), and their values are separated by a comma (,).
Example
The above is an example of a JSON object containing data in name-value pairs. It has values of datatypes: string, number, object and array.
The value for the name «phoneNumbers» is an array of two objects.
The value for the name «address» is an object containing 3 name-value pairs.
The name «age» contains a value of type number.
How to create a JSON object in PHP
First is to create an array, then encode it into a JSON object.
Since data in JSON is stored in name-value pairs, we use the associative arrays which also store data in key-value pairs, where the key is used as an index to search the corresponding value in the array.
To create an associative array in PHP, we put our key-value pairs inside the array() function and use the double arrow operator (=>) to assign values to keys.
"John", "lastName" => "Doe", "email" => "johndoe@gmail.com", "phone" => "111-111-1111" );
After creating an associative array, then convert it into a JSON object using the PHP inbuilt json_encode() function as shown below.
Add a Content-Type header by adding header(«Content-Type:application/json») at the top of the PHP file for your output to be recognized as a JSON object.
"John", "lastName" => "Doe", "email" => "johndoe@gmail.com", "phone" => "111-111-1111" $jsonobject = json_encode($myobj); echo $jsonobject;
The above code will print out a JSON object as below:
How to create a JSON object with an array and nested object
To have a name with an object as its value, will just need to create an array and assign it to the key as the value while forming the associative array.
To have a name with an array value, we just need to create an array as the value, then create other arrays with key-value pairs inside it.
Example
"John", "lastName" => "Doe", "email" => "johndoe@gmail.com", "address" => array( "postalAddress" => "12345", "postalCode" => "5432", "city" => "Nairobi" ), "siblings" => array( array( "name" => "Joseph Doe" ), array( "name" => "Mary Doe" ) ) ); $jsonobject = json_encode($myarray); echo $jsonobject;
The above code will output a JSON object below:
Sending a JSON object as a post request in PHP
Now that you already know how to form a JSON object, let’s dive into how you can send it as POST request.
We will achieve that using PHP Curl as shown below:
"John", "lastName" => "Doe", "email" => "johndoe@gmail.com", "phone" => "111-111-1111" ); $url = "https://www.example.com/register" $payload = json_encode($myarray); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $payload); curl_exec($curl); curl_close($curl);
Conclusion
In this tutorial we have covered what JSON is, why it’s important, how to create associative arrays in PHP, how to convert an associative array into a JSON object and how to send the created object in a POST request using PHP curl.