ホームページ >バックエンド開発 >PHPチュートリアル >PHPでJSONデータを解析する方法

PHPでJSONデータを解析する方法

青灯夜游
青灯夜游オリジナル
2018-11-15 11:11:5235372ブラウズ

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 をエンコードできます。インデックス配列は JSON 配列としてエンコードされます。例:

<?php
  // 索引数组
  $colors = array("红", "绿", "蓝", "橙", "黄");
  echo json_encode($colors);
?>

上記の例の出力は次のようになります:

PHPでJSONデータを解析する方法

# #次の例に示すように、JSON_FORCE_OBJECT オプションを使用して json_encode() 関数を強制することもできます。次の例に示すように、PHP インデックス配列を JSON オブジェクトとして返します。

<?php
  // 索引数组
  $colors = array("红", "绿", "蓝", "橙");
  echo json_encode($colors, JSON_FORCE_OBJECT);
?>

上記の例の出力は次のようになります。

PHPでJSONデータを解析する方法上記の例で紹介したように、はい、非連想配列は配列またはオブジェクトとしてエンコードできます。ただし、連想配列は常にオブジェクトとしてエンコードされます。

PHP を使用した JSON データのデコード

JSON データのデコードは、エンコードと同じくらい簡単です。 PHP json_decode() 関数を使用して、JSON エンコードされた文字列を適切な PHP データ型に変換できます。次の例は、JSON オブジェクトをデコードまたは PHP オブジェクトに変換する方法を示しています。

<?php
// 在PHP变量中存储JSON数据
$json = &#39;{"Peter":65,"Harry":80,"John":78,"Clark":90}&#39;;
 
var_dump(json_decode($json));
?>

上記の例の出力は次のようになります:

PHPでJSONデータを解析する方法デフォルトでは、 json_decode() 関数はオブジェクトを返します。ただし、2 番目のパラメーター $assoc を指定することもできます。これは、JSON オブジェクトが true (デフォルト値は false) に設定されている場合に、連想配列にデコードされるブール値を受け入れます。例を見てみましょう:

<?php
// 在PHP变量中存储JSON数据
$json = &#39;{"Peter":65,"Harry":80,"John":78,"Clark":90}&#39;;
 
var_dump(json_decode($json, true));
?>

上記の例の出力は次のようになります:

PHPでJSONデータを解析する方法 次に、その方法を示す別の例を見てみましょう。 JSON データをデコードし、PHP で JSON オブジェクトまたは配列の個々の要素にアクセスします。

<?php
// 将JSON编码的字符串分配给PHP变量
$json = &#39;{"Peter":65,"Harry":80,"John":78,"Clark":90}&#39;;
 
// 将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
?>

上記の例の出力は次のようになります:

PHPでJSONデータを解析する方法 また、foreach() を使用して、次のようにデコードされたデータをループすることもできます。 ##

<?php
// 将JSON编码的字符串分配给PHP变量
$json = &#39;{"Peter":65,"Harry":80,"John":78,"Clark":90}&#39;;
 
// 将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でJSONデータを解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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