ホームページ >バックエンド開発 >PHPチュートリアル >PHPでJSONデータを解析する方法
php は JSON データをどのように解析しますか?この記事では、PHP で JSON データを解析する基本的な方法、つまり JSON データのエンコードとデコードについて説明します。一定の参考値があるので、困っている友達は参考にしていただければ幸いです。
まず、理解しましょうJSONとは何ですか?
JSON は、迅速かつ簡単に解析して生成できる標準の軽量データ交換形式です。
JSON は、XML と同様に、記述が簡単で理解しやすいテキストベースの形式ですが、XML とは異なり、JSON データ構造が占有する帯域幅は XML バージョンよりも少なくなります。 JSON は 2 つの基本構造に基づいています:
オブジェクト: はキーと値のペア (つまり、キー:値) のコレクションとして定義されます。各オブジェクトは左中括弧 "{" で始まり、右中括弧「}」で終わり、複数のキーと値のペアはカンマ「,」で区切られます。
配列: は、値の順序付きリストとして定義されます。配列は左括弧 "[" で始まり、右括弧 "]" で終わります。値は次のように区切られます。カンマ「、」。
JSON では、キーは常に文字列であり、値は文字列、数値、true または false、null、あるいはオブジェクトや配列の場合もあります。文字列は二重引用符で囲む必要があり、\n、\t、\ などのエスケープ文字を含めることができます。 JSON オブジェクトは次のようになります:
{ "book": { "name": "PHP 从入门到精通", "author": "明日科技", "year": 2017, "type": "php编程", "bestseller": true } }
JSON 配列の例は次のようになります:
{ "fruits": [ "Apple", "Banana", "Strawberry", "Mango" ]}
JSON のデータ構造は PHP のデータ構造と非常によく似ていることがわかります。配列。 php が JSON データをどのように解析するかを学びましょう。
PHP には、JSON データのエンコードとデコードに使用できる組み込み関数 (json_encode() 関数と json_decode() 関数) があります。注: これら 2 つの関数は、UTF-8 でエンコードされた文字列データにのみ適用されます。
PHP での JSON データのエンコード
PHP では、値を JSON 形式にエンコードするために json_encode() 関数が使用されます。エンコードされた値には、データベースやファイル ハンドルなどのリソースを除く任意の PHP データ型を使用できます。次の例は、PHP 連想配列を JSON オブジェクトにエンコードする方法を示しています:
<?php // 关联数组 $marks = array("Peter"=>65, "Harry"=>80, "John"=>78, "Clark"=>90); echo json_encode($marks); ?>
上記の例の出力は次のようになります:
同様に、PHP をエンコードできます。インデックス配列は JSON 配列としてエンコードされます。例:
<?php // 索引数组 $colors = array("红", "绿", "蓝", "橙", "黄"); echo json_encode($colors); ?>
上記の例の出力は次のようになります:
# #次の例に示すように、JSON_FORCE_OBJECT オプションを使用して json_encode() 関数を強制することもできます。次の例に示すように、PHP インデックス配列を JSON オブジェクトとして返します。<?php // 索引数组 $colors = array("红", "绿", "蓝", "橙"); echo json_encode($colors, JSON_FORCE_OBJECT); ?>上記の例の出力は次のようになります。
上記の例で紹介したように、はい、非連想配列は配列またはオブジェクトとしてエンコードできます。ただし、連想配列は常にオブジェクトとしてエンコードされます。
PHP を使用した JSON データのデコードJSON データのデコードは、エンコードと同じくらい簡単です。 PHP json_decode() 関数を使用して、JSON エンコードされた文字列を適切な PHP データ型に変換できます。次の例は、JSON オブジェクトをデコードまたは PHP オブジェクトに変換する方法を示しています。
<?php // 在PHP变量中存储JSON数据 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; var_dump(json_decode($json)); ?>
上記の例の出力は次のようになります:
デフォルトでは、 json_decode() 関数はオブジェクトを返します。ただし、2 番目のパラメーター $assoc を指定することもできます。これは、JSON オブジェクトが true (デフォルト値は false) に設定されている場合に、連想配列にデコードされるブール値を受け入れます。例を見てみましょう:
<?php // 在PHP变量中存储JSON数据 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; var_dump(json_decode($json, true)); ?>
上記の例の出力は次のようになります:
次に、その方法を示す別の例を見てみましょう。 JSON データをデコードし、PHP で JSON オブジェクトまたは配列の個々の要素にアクセスします。
<?php // 将JSON编码的字符串分配给PHP变量 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; // 将JSON数据解码为PHP关联数组 $arr = json_decode($json, true); // Access values from the associative array echo $arr["Peter"]; // Output: 65 echo $arr["Harry"]; // Output: 80 echo $arr["John"]; // Output: 78 echo $arr["Clark"]; // Output: 90 // 将JSON数据解码为PHP对象 $obj = json_decode($json); // 返回对象的访问值 echo $obj->Peter; // Output: 65 echo $obj->Harry; // Output: 80 echo $obj->John; // Output: 78 echo $obj->Clark; // Output: 90 ?>
上記の例の出力は次のようになります:
また、foreach() を使用して、次のようにデコードされたデータをループすることもできます。 ##
<?php // 将JSON编码的字符串分配给PHP变量 $json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}'; // 将JSON数据解码为PHP关联数组 $arr = json_decode($json, true); // 通过关联数组循环 foreach($arr as $key=>$value){ echo $key . "=>" . $value . "<br>"; } echo "<hr>"; // 将JSON数据解码为PHP对象 $obj = json_decode($json); // 通过对象循环 foreach($obj as $key=>$value){ echo $key . "=>" . $value . "<br>"; } ?>上記の例の出力は次のようになります:
概要: 上記はこの記事の全内容です。お役に立てば幸いです。みんなの学びに。
以上がPHPでJSONデータを解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。