ホームページ  >  記事  >  バックエンド開発  >  PHP JSONの使用例

PHP JSONの使用例

WBOY
WBOYオリジナル
2016-07-23 08:54:58878ブラウズ

1. json_encode()

この関数は主に配列とオブジェクトを json 形式に変換するために使用されます。まずは配列変換の例を見てみましょう:

  1. $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
  2. echo json_encode($arr);
コードをコピー

結果は

  1. {"a":1,"b":2,"c":3,"d":4,"e":5}
コードをコピー

オブジェクト変換の別の例を見てみましょう:

  1. $obj->body = '別の投稿';
  2. $obj->id = 21;
  3. $obj->approved = true >status = NULL;
  4. echo json_encode($obj);
コードをコピー
結果は

{"body":"別の投稿",
    "id":21,
  1. コードをコピー
json は utf-8 でエンコードされた文字のみを受け入れるため、 json_encode() のパラメーターは utf-8 でエンコードされている必要があります。そうしないと、空の文字または null が返されます。中国語で GB2312 エンコードを使用する場合、または外国語で ISO-8859-1 エンコードを使用する場合は、この点に特別な注意を払う必要があります。
2. インデックス配列と連想配列

PHP は 2 種類の配列をサポートしています。1 つは「値」(値) のみを格納するインデックス付き配列、もう 1 つは「名前と値のペア」(名前/値) を格納する連想配列です。

JavaScript は連想配列をサポートしていないため、json_encode() はインデックス付き配列のみを配列形式に変換し、連想配列をオブジェクト形式に変換します。 たとえば、インデックス配列があります

$arr = Array('one', 'two', 'three');

echo json_encode($arr);
コードをコピーします。
  1. 結果は次のとおりです:
[「one」、「two」、「three」]

コードをコピー
    連想配列に変更する場合:
$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');
echo json_encode($arr);

コードをコピー
  1. 結果が変わりました:
{"1":"one","2":"two","3":"three"}

コードをコピー

データ形式が「[]」(配列)から「{}」(オブジェクト)に変更されていることに注意してください。
  1. 「インデックス配列」を「オブジェクト」に強制的に入れる必要がある場合は、次のように書くことができます
json_encode( (object)$arr );

コードをコピー

または
json_encode ( $arr, JSON_FORCE_OBJECT )

コードをコピー

    3. クラス変換
以下は PHP クラスです:

class Foo { const ERROR_CODE = '404'; public $public_ex = 'これはプライベートです!'

public function getErrorCode() {

return self::ERROR_CODE;

}
}
    コードをコピー
  1. 次に、このクラスのインスタンスで json 変換を実行します。

    1. $foo = new Foo;
    2. $foo_json = json_encode($foo);
    3. echo $foo_json;
    出力は

    {"public_ex":"これはパブリックです"}
    コードをコピー
    パブリック変数 (public) を除いて、他のもの (定数、プライベート変数、メソッドなど) が欠落していることがわかります。

    4. json_decode()

    この関数は、json テキストを対応する PHP データ構造に変換するために使用されます。以下に例を示します:

    $json = '{"foo": 12345}';
    1. $obj = json_decode($json);
    2. 通常、json_decode() は常に配列ではなく PHP オブジェクトを返します。例:
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

    var_dump(json_decode($json) );

    コードをコピー
    1. 結果は PHP オブジェクトです:
    object(stdClass)#1 (5) {
    ["a"] => int(1) ["b"] => int(2) ["c"] => int; ) ["d"] => int(4) ["e"] => int(5)

    }

    コードをコピーします
    1. PHP 連想配列の生成を強制したい場合は、 json_decode() にパラメータ true を追加する必要があります:
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

    var_dump(json_decode($json, true));

    コードをコピー
    1. 結果は連想配列になります:
    array(5) {
    ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d" ] => int(4) ["e"] => int(5)

    }

    コードをコピーします
    1. 5. json_decode() の一般的なエラー
    次の 3 つの json の記述方法はすべて間違っています。どこにエラーがあるかわかりますか?

    $bad_json = "{ 'bar': 'baz' }";

    $bad_json = '{ bar: "baz" }'; コードをコピーします

    これら 3 つの文字列に対して json_decode() を実行すると、null が返され、エラーが報告されます。
      最初の間違いは、JSON の区切り文字では単一引用符ではなく二重引用符の使用のみが許可されていることです。 2 番目の間違いは、JSON の名前と値のペアの「名前」(コロンの左側の部分) は、いかなる状況でも二重引用符で囲む必要があることです。 3 番目のエラーは、最後の値の後にカンマを追加できないことです。
    1. さらに、json はオブジェクトと配列を表すためにのみ使用できます。json_decode() が文字列または値に対して使用された場合、null が返されます。
    var_dump(json_decode("Hello World")) //null

    コードをコピー



    PHP、JSON


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