ホームページ >バックエンド開発 >PHPチュートリアル >PHP で JSON POST データを正しく読み取って解析するにはどうすればよいですか?

PHP で JSON POST データを正しく読み取って解析するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-15 20:11:12940ブラウズ

How to Correctly Read and Parse JSON POST Data in PHP?

PHP での JSON POST データの読み取り

JSON 形式で POST データを受信する場合、PHP で正しく取得して解析することが重要です。このシナリオでは、JSON POST データの不適切な処理が原因で問題が発生しました。

これを解決するには、$_POST の使用を他のメソッドに置き換えて、生の入力を読み取り、JSON としてデコードします。これを実現する方法は次のとおりです:

受信ページの PHP を変更:

$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE);

このコードは、生の入力を JSON として読み取り、配列に解析します。 $input でアクセスできます。

の CURL コードを更新しましたテスト:

応答で述べたように、JSON 通信では CURLOPT_POSTFIELDS を JSON エンコードされた文字列とともに使用する必要があります。変更されたコードは次のとおりです。

$data_string = json_encode($data);

$curl = curl_init('http://webservice.local/');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string)
));
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($curl);
$result = json_decode($result);
var_dump($result);

このコードは、JSON コンテンツを示すように HTTP ヘッダーを正しく設定し、データを JSON として送信する前にエンコードします。

追加メモ:

header('Content-type: application/json'); が確実に行われることが重要です。この行は、Web サービス ページに 1 回だけ表示されます。複数回呼び出される場合、適切なヘッダー情報の送信に問題が発生する可能性があります。

以上がPHP で JSON POST データを正しく読み取って解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。