検索

PHP JSONの使用例

Nov 08, 2016 pm 01:48 PM

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}

見てください別のオブジェクトでの変換例:
   $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 つは「値」(value) のみを保存するインデックス付き配列、もう 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":"one","2":"two","3":"three"}


データ形式が "[]" (配列) から"{}" (物体 )。

「インデックス配列」を「オブジェクト」に強制する必要がある場合は、次のように記述できます

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;  
    }  
  }  

Now 、このクラスのインスタンスで json 変換を実行します:

$foo = new Foo;  
$foo_json = json_encode($foo);  
echo $foo_json;  

出力結果は

{"public_ex":"this is public"} です

パブリック変数 (public) に加えて、他のものも確認できます(定数、プライベート変数、メソッドなど) が失われます。

4. json_decode()

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

   
  $json = '{"foo": 12345}';
   
  $obj = json_decode($json);  
  print $obj->{'foo'}; // 12345  
通常、json_decode() は常に配列ではなく PHP オブジェクトを返します。例:
   
  $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
   
  var_dump(json_decode($json));  
結果として、PHP オブジェクトが生成されます:
object(stdClass)#1 (5) {  
  ["a"] => int(1)    ["b"] => int(2)    ["c"] => int(3)    ["d"] => int(4)    ["e"] => int(5)  
}  

PHP 連想配列の生成を強制したい場合は、json_decode() にパラメーター true を追加する必要があります:

   
  $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
   
  var_dump(json_decode($json,true));  

結果は連想配列になります:

   
array(5) {  
   ["a"] => int(1)     ["b"] => int(2)     ["c"] => int(3)     ["d"] => int(4)     ["e"] => int(5)  
}  
5. json_decode() よくある間違い

次の 3 つの json の記述方法はすべて間違っています。どこにエラーがあるかわかりますか?


これら 3 つの文字列に対して json_decode() を実行すると、null が返され、エラーが報告されます。

最初のエラーは、JSON 区切り文字では単一引用符ではなく二重引用符の使用のみが許可されていることです。 2 番目の間違いは、JSON の名前と値のペアの「名前」 (コロンの左側の部分) では、いかなる場合でも二重引用符を使用する必要があることです。 3 番目のエラーは、最後の値の後にカンマを追加できないことです。

さらに、json はオブジェクトと配列を表すためにのみ使用できます。json_decode() が文字列または値に対して使用された場合、null が返されます。
var_dump(json_decode("Hello World")) //null


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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。