ホームページ > 記事 > ウェブフロントエンド > phpにおけるjsonの応用とは何ですか? (コード例)
この記事では、php での json の応用について説明します。 (コードサンプル) は、参考にしていただければ幸いです。
バージョン 5.2 以降、PHP は json_encode() 関数と json_decode() 関数をネイティブに提供します。前者はエンコードに使用され、後者はデコードに使用されます。
1. json_encode()
この関数は主に配列とオブジェクトを json 形式に変換するために使用されます。まず配列変換の例を見てみましょう:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr);
結果は次のようになります: {"a":1,"b":2,"c":3,"d":4,"e": 5}<span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"> <span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>オブジェクト変換の別の例を見てください。
$obj->body = 'another post'; $obj->id = 21; $obj->approved = true; $obj->favorite_count = 1; $obj->status = NULL; echo json_encode($obj);結果は次のようになります: {"body":"another post","id":21,"approved":true,"favorite_count":1,"status":null}
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);
结果为:["one","two","three"]これを連想配列に変更すると:
$arr = Array('1'=>'one', '2'=>'two', '3'=>'three'); echo json_encode($arr);結果は次のように変わります: {"1": "1 つ"、"2":"2 つ"、"3":"3 つ"}
<span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"> <span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"></span></span></span></span></span></span></span></span></span></span></span></span>##データ形式が「[]」(配列)から「{}」(オブジェクト)に変更されていることに注意してください。 </span>
「インデックス配列」を「オブジェクト」に強制する必要がある場合は、次のように記述できます:
json_encode( (object)$arr );または:
json_encode ( $arr, JSON_FORCE_OBJECT );3. クラス変換 次は PHP クラスです:
class Foo { const ERROR_CODE = '404'; public $public_ex = 'this is public'; private $private_ex = 'this is private!'; protected $protected_ex = 'this should be protected'; public function getErrorCode() { return self::ERROR_CODE; } }次に、このクラスのインスタンスで json 変換を実行します:
$foo = new Foo; $foo_json = json_encode($foo); echo $foo_json;出力結果は次のようになります: {"public_ex":"this is public"}
<span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"># ################### ########################見られます、# ##パブリック変数 (public) を除いて、その他のもの (定数、プライベート変数、メソッドなど) は失われます。 </span></span></span></span>4. json_decode()</span>
この関数は、json テキストを対応する PHP データ構造に変換するために使用されます。以下に例を示します。 <span class="token punctuation"><pre class="brush:php;toolbar:false">$json = '{"foo": 12345}';
$obj = json_decode($json);
print $obj->{'foo'}; // 12345 </pre>
<span class="token string"><span class="token punctuation">通常、 json_decode() は常に配列ではなく PHP オブジェクトを返します。 <span class="token string">例: <span class="token punctuation"><pre class="brush:php;toolbar:false">$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json)); </pre></span>結果として、PHP オブジェクトが生成されます: </span><pre class="brush:php;toolbar:false;">object(stdClass)[2]
public &#39;a&#39; => int 1
public &#39;b&#39; => int 2
public &#39;c&#39; => int 3
public &#39;d&#39; => int 4
public &#39;e&#39; => int 5</pre></span></span>PHP 連想配列の生成を強制したい場合、json_decode() は次のようにする必要があります。パラメータ true を追加します: </span>
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json,true));結果は連想配列になります:
array (size=5) 'a' => int 1 'b' => int 2 'c' => int 3 'd' => int 4 'e' => int 5json_decode() の一般的なエラー。次の 3 つの JSON の書き方はすべて間違っています。はい、どこが間違っているかわかりますか?
$bad_json = "{ 'bar': 'baz' }"; $bad_json = '{ bar: "baz" }'; $bad_json = '{ "bar": "baz", }';これら 3 つの文字列 に対して json_decode() を実行すると、null が返され、エラーが報告されます。
第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。
第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。
第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。
另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。
var_dump(json_decode("Hello World")); //null
以上がphpにおけるjsonの応用とは何ですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。