ホームページ  >  記事  >  バックエンド開発  >  PHPでjson配列を取得する方法

PHPでjson配列を取得する方法

PHPz
PHPzオリジナル
2023-04-25 09:05:131047ブラウズ

インターネットの継続的な発展に伴い、Web アプリケーションはデータ送信に JSON (JavaScript Object Notation) 形式を使用することが増えています。 PHP は JSON データを簡単に処理できるため、多くの Web 開発者にとって PHP が選ばれる言語となっています。

JSON データを取得して配列に変換することは、PHP では非常に一般的なタスクです。この記事では、次の点を含む、PHP を使用して JSON 配列を取得する方法を紹介します。

  1. json_decode() 関数を使用して JSON 文字列を PHP 配列に変換する
  2. 使用他の Web サイトから読み取る PHP CURL ライブラリは JSON データを取得します
  3. サードパーティ ライブラリ (Guzzle など) を使用して JSON データを取得します
  4. JSON データを取得するときにエラーと例外を処理します
  5. json_decode() 関数を使用して JSON 文字をデコードする文字列を PHP 配列に変換する

PHP には、JSON 文字列を PHP 配列に変換する簡単なメソッド、つまり json_decode() 関数が用意されています。この関数は次のように使用されます。

$json_string = '{"name":"John","age":30,"city":"New York"}';
$php_array = json_decode($json_string, true);
print_r($php_array);

出力:

Array
(
    [name] => John
    [age] => 30
    [city] => New York
)

上記の例では、最初に JSON 文字列が定義され、次に json_decode() 関数を使用して PHP 配列に変換されます。

json_decode() 関数の 2 番目のパラメーターは、JSON 文字列を連想配列に変換するかどうかを示すブール値であることに注意してください。 false に設定するか未設定の場合、JSON 文字列がオブジェクトに変換されます。ただし、JSON 文字列を配列に変換する方が一般的です。

さらに、JSON 文字列が無効であるか、無効な JSON データが含まれている場合、 json_decode() 関数は NULL を返します。したがって、配列を使用する前に、戻り値が NULL かどうかを確認する必要があります。

  1. PHP CURL ライブラリを使用して他の Web サイトから JSON データを取得する

他の Web サイトから JSON データを取得する場合は、PHP CURL ライブラリを使用できます。カール ライブラリは、HTTP、FTP、SMTP などの複数のプロトコルをサポートするオープン ソース ライブラリです。

次は、curl を使用して JSON データを取得する簡単な例です。

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "http://example.com/data.json");
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
$json_data = curl_exec($curl_handle);
curl_close($curl_handle);

$php_array = json_decode($json_data, true);
print_r($php_array);

上記のコードでは、curl セッションは最初にcurl_init() 関数によって作成されます。次に、curl_setopt() 関数を使用してオプションを設定します。これには、Web サイトから JSON データをダウンロードする URL と、ダウンロードしたデータを文字列に保存するオプションが含まれます。

最後に、curl_exec() 関数を使用して、curl セッションを実行し、返された JSON データを $json_data 変数に保存します。次に、json_decode() 関数を使用して、$json_data 文字列を PHP 配列に変換します。

上記の例のcurlセッションは、スクリプトの実行後にcurlを自動的に閉じないことに注意してください。したがって、curl セッションは、curl_close() 関数を使用して明示的に閉じる必要があります。

  1. サードパーティ ライブラリ (Guzzle など) を使用して JSON データを取得する

PHP には、他の Web サイトから JSON データを簡単に取得できるサードパーティ ライブラリが多数あります。 。非常に人気のあるライブラリの 1 つが Guzzle です。

Guzzle は、リクエストの送信と応答の処理を行う HTTP ベースの PHP クライアントです。 Guzzle は、タイムアウト、リダイレクト、Cookie 管理、その他の問題を自動的に処理できます。非同期処理と PSR-7 HTTP メッセージもサポートします。以下は、Guzzle を使用して JSON データを取得する例です。

use GuzzleHttp\Client;

$client = new Client();
$response = $client->get('http://example.com/data.json');
$json_data = $response->getBody()->getContents();
$php_array = json_decode($json_data, true);
print_r($php_array);

上の例では、最初に Guzzle クライアントが作成されます。次に、$client->get() メソッドを使用して GET リクエストを送信し、その応答を $response 変数に保存します。

$response->getBody()->getContents() メソッドを使用して、応答オブジェクトから応答の本文コンテンツを取得し、それを $json_data 変数に保存します。最後に、json_decode() 関数を使用して、$json_data 文字列を PHP 配列に変換します。

  1. JSON データ取得時のエラーと例外の処理

他の Web サイトから JSON データを取得したり、JSON 文字列から PHP 配列に変換したりするときに、エラーや異常が発生することがあります。したがって、適切なエラー処理および例外処理メカニズムをコードに追加する必要があります。

たとえば、次のコード例は、try-catch ブロックを使用して JSON デコード エラーをキャッチする方法を示しています。

$json_string = '{"name":"John","age":30,"city":"New York","}';
try {
    $php_array = json_decode($json_string, true, 512, JSON_THROW_ON_ERROR);
    print_r($php_array);
} catch (JsonException $e) {
    echo 'JSON解码错误:', $e->getMessage();
}

上記のコードでは、JSON_THROW_ON_ERROR オプションと try-catch ブロックは次のとおりです。 JSON エラー例外をキャッチするために使用されます。 JSON 文字列が無効な場合は、JsonException がスローされます。

さらに、curl 操作と Guzzle リクエストを関数にカプセル化し、エラーと例外の処理を含めることができます。これにより、コードの管理と再利用が容易になります。

概要

JSON 配列の取得は、最新の Web 開発の重要な部分です。 PHP の json_decode() 関数は、JSON 文字列を PHP 配列に簡単に変換でき、curl や Guzzle などのライブラリは他の Web サイトから JSON データを取得できます。これらのメソッドはシンプルで使いやすいですが、JSON データを取得する際のエラーと例外の処理には特別な注意を払う必要があります。

以上がPHPでjson配列を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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