Json php запрос ответ

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.

Читайте также:  How to run console commands in python

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.

Источник

Как принять JSON ответ на PHP?

Мне приходит в ответ строка JSON.stringify(data), которую я могу вывести через JavaScript в блок с id=»error».

Как мне эту строку-ответ получить на PHP?

mashletov

$data = ['success' => false; 'message' => 'Тест', 'phone' => $_POST['phone']]; header('Content-Type: application/json'); echo json_encode($data);
$.ajax(< type: 'post', url: '/script.php'. // без http:// и домена dataType: 'json', data: , success: function(data) < if (!data.success) < $("#error").html(data.message); console.log(data.phone); // 4444 >> >);

JSON.stringify обязательно должен быть. В другом виде, внешний сервер, куда я отправляю данные, не примет их. Ответ приходит в виде <"result":"ok">. Его я через JavaScript принимаю и могу вывести на экран. Но как мне этот «ок» в php вывести?

Читайте также:  Field shadowing in java

mashletov

Anton Mashletov, Уважаемый Anton вот вы вообще читаете что вам пишут? Написано как передать в php, тоесть человек, в том числе и я зашел увидеть как ПЕРЕДАТЬ ответ в PHP, а вы, как и все гуру, пишите консоле лог, да никому не упал ваш консоле лог, у всех давно всё в него выведено, как вы этого не понимаете, надо увидеть ответ в json при помощи echo, print_r, print ВОТ ЧТО НУЖНО. куда не зайди везде консоле лог((((( Ну вы вообще нормальные?, на кой вам вопрос то задают. Как работать с ответом, не надо про консоль, как вывести переменную, а потом все разберутся что с ней делать! Суть послать ajax запрос на сервер, он присылает ответ в json, ЕГО НАДО ПОЛУЧИТЬ В PHP, тоесть ладно, для очень умных, ответ типа надо иметь в виде — $result = ‘ок’, не в логе, не в диве, не в p, не в алерте, а именно в переменной php под именем $result со строковым значением ОК. Ну реально, неужели так сложно ответить на поставленный вопрос? Ну или написать, вы все дураки, и вам не получить такого вида переменную, и надо в любом случае работать с DOM, но мне например надо полученный ответ записать в БД и я не хочу записывать его jq а хочу записать при помощи redBeanPHP

mashletov

Сергей Павлов, зачем тогда вообще ajax и js. Грузите курлом:

$curl = curl_init('http://server.ru/data'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $json = curl_exec($curl); $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); curl_close($curl); $response = json_decode($json_response, true); if ($status != 200) < throw new \Exception('Ошибка'); >$response = json_decode($json, true); $result = $response['result']; // вот он ваш $result

Автор всё так сумбурно объясняет. Хрен пойми.

Источник

Возврат JSON из PHP-скрипта

Я хочу вернуть JSON из скрипта PHP. Надо ли устанавливать Content-Type заголовок?

Ответ 1

Хотя обычно все работает и без этого, но , согласно спецификации, вам обязательно необходимо устанавливать Content-Type заголовок:

$data = /** все, что вы сериализуете **/;

header(‘Content-Type: application/json’);

echo json_encode($data);

Если я не использую конкретный фреймворк, я обычно разрешаю некоторым параметрам запроса изменять поведение вывода. Как правило, для быстрого устранения неполадок может быть полезно не отправлять заголовок, а использовать print_r и другую полезную нагрузку данных (хотя в большинстве случаев в этом нет необходимости).

Ответ 2

Полный фрагмент допустимого и понятного PHP-кода, возвращающего JSON, выглядит так:

$option = $_GET[‘option’];

if ( $option == 1 )

$data = [ ‘a’, ‘b’, ‘c’ ];

Читайте также:  Crash course in python programming

// декодируем в JSON массив: [«a»,»b»,»c»]

> else

$data = [ ‘name’ => ‘God’, ‘age’ => -1 ];

// декодируем в JSON объект:

>

header(‘Content-type: application/json’);

echo json_encode( $data );

Ответ 3

Согласно руководству по методу json_encode, он может возвращать нестроковый ответ ( false ): Возвращает строку в кодировке JSON в случае успеха или FALSE, если ошибка .

Когда это произойдет, echo json_encode($data) будет выведена пустая строка, которая является недопустимым JSON .

json_encode, например, завершится с ошибкой (и вернет false ), если его аргумент содержит строку, отличную от UTF-8.

Это состояние ошибки должно быть зафиксировано в PHP, например, следующим образом:

header(«Content-Type: application/json»);

// Соберите все необходимое в переменную $data.

$json = json_encode($data);

if ($json === false)

// Избегайте эха пустой строки (которая является недействительным JSON)

$json = json_encode([«jsonError» => json_last_error_msg()]);

if ($json === false)

// Этого не должно быть, но мы идем до конца:

$json = »;

>

// Установка кода статуса ответа HTTP: 500 — Внутренняя ошибка сервера http_response_code(500);

>

echo $json;

?>

Тогда принимающая сторона, конечно же, должна знать, что наличие свойства jsonError указывает на состояние ошибки, которое она должна обрабатывать соответствующим образом.

В производственном режиме может быть лучше отправлять клиенту только общий статус ошибки и регистрировать более конкретные сообщения об ошибках для дальнейшего исследования.

Дополнительные сведения о работе с ошибками JSON см. в документации PHP .

Ответ 3

Также хорошо установить безопасность доступа — просто замените «*» на домен, к которому вы хотите получить доступ.

header(‘Access-Control-Allow-Origin: *’);

header(‘Content-type: application/json’);

$response = array();

$response[0] = array(

‘id’ => ‘1’,

‘value1’=> ‘value1’,

‘value2’=> ‘value2’

);

echo json_encode($response);

?>

Ответ 4

На этот вопрос было много ответов, но ни один из них не охватывает весь процесс возврата чистого JSON со всем необходимым для предотвращения искажения ответа JSON.

function returnJsonHttpResponse($success, $data)

// удалите любую строку, которая может создать недопустимый JSON

// такие как PHP Notice, Warning, logs.

ob_clean();

// это очистит все ранее добавленные заголовки, чтобы начать с чистого листа

header_remove();

// Установите тип содержимого JSON и charset

// (charset может быть установлен на что-то другое)

header(«Content-type: application/json; charset=utf-8»);

// Установите код ответа HTTP, 2xx = SUCCESS,

// любой другой будет ошибкой, обратитесь к документации HTTP

if ($success)

http_response_code(200);

> else

http_response_code(500);

>

// кодируйте ваш объект или массив PHP в строку JSON.

// stdClass или массив

echo json_encode($data);

exit();

>

Ответ 5

Простая функция для возврата ответа JSON с кодом состояния HTTP .

function json_response($data=null, $httpStatus=200)

header_remove();

header(«Content-Type: application/json»);

http_response_code($httpStatus);

echo json_encode($data);

exit();

>

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

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