ホームページ ウェブフロントエンド jsチュートリアル phpにおけるjsonの応用とは何ですか? (コード例)

phpにおけるjsonの応用とは何ですか? (コード例)

Sep 28, 2018 pm 04:01 PM
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 = &#39;another post&#39;;
$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(&#39;one&#39;,&#39;two&#39;,&#39;three&#39;);
 echo json_encode($arr);
ログイン後にコピー
结果为:["one","two","three"]  
ログイン後にコピー

これを連想配列に変更すると:

 $arr = Array(&#39;1&#39;=>&#39;one&#39;, &#39;2&#39;=>&#39;two&#39;, &#39;3&#39;=>&#39;three&#39;);   
 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 = &#39;404&#39;;
    public    $public_ex = &#39;this is public&#39;;
    private   $private_ex = &#39;this is private!&#39;;
    protected $protected_ex = &#39;this should be protected&#39;; 
    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"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$json = &amp;#39;{&quot;foo&quot;: 12345}&amp;#39;; $obj = json_decode($json); print $obj-&gt;{&amp;#39;foo&amp;#39;}; // 12345  </pre><div class="contentsignin">ログイン後にコピー</div></div><span class="token string"><span class="token punctuation">通常、 json_decode() は常に配列ではなく PHP オブジェクトを返します。 <span class="token string">例: <span class="token punctuation"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$json = &amp;#39;{&quot;a&quot;:1,&quot;b&quot;:2,&quot;c&quot;:3,&quot;d&quot;:4,&quot;e&quot;:5}&amp;#39;; var_dump(json_decode($json)); </pre><div class="contentsignin">ログイン後にコピー</div></div></span>結果として、PHP オブジェクトが生成されます: </span><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>object(stdClass)[2] public &amp;#39;a&amp;#39; =&gt; int 1 public &amp;#39;b&amp;#39; =&gt; int 2 public &amp;#39;c&amp;#39; =&gt; int 3 public &amp;#39;d&amp;#39; =&gt; int 4 public &amp;#39;e&amp;#39; =&gt; int 5</pre><div class="contentsignin">ログイン後にコピー</div></div></span></span>PHP 連想配列の生成を強制したい場合、json_decode() は次のようにする必要があります。パラメータ true を追加します: </span>

$json = &#39;{"a":1,"b":2,"c":3,"d":4,"e":5}&#39;;
var_dump(json_decode($json,true));   
ログイン後にコピー

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

array (size=5)
  &#39;a&#39; => int 1
  &#39;b&#39; => int 2
  &#39;c&#39; => int 3
  &#39;d&#39; => int 4
  &#39;e&#39; => int 5
ログイン後にコピー

json_decode() の一般的なエラー。次の 3 つの JSON の書き方はすべて間違っています。はい、どこが間違っているかわかりますか?

$bad_json = "{ &#39;bar&#39;: &#39;baz&#39; }";
$bad_json = &#39;{ bar: "baz" }&#39;;
$bad_json = &#39;{ "bar": "baz", }&#39;;
ログイン後にコピー
これら 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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

golang WebSocketとJSONの組み合わせ:データ送信と解析を実現 golang WebSocketとJSONの組み合わせ:データ送信と解析を実現 Dec 17, 2023 pm 03:06 PM

golangWebSocket と JSON の組み合わせ: データ送信と解析の実現 現代の Web 開発では、リアルタイムのデータ送信がますます重要になっています。 WebSocket は双方向通信を実現するために使用されるプロトコルで、従来の HTTP リクエスト/レスポンス モデルとは異なり、WebSocket を使用すると、サーバーがクライアントにデータをアクティブにプッシュできます。 JSON (JavaScriptObjectNotation) は、簡潔で読みやすいデータ交換用の軽量形式です。

Javaで@Exposeアノテーションを使用してJSONからフィールドを除外するにはどうすればよいですか? Javaで@Exposeアノテーションを使用してJSONからフィールドを除外するにはどうすればよいですか? Sep 16, 2023 pm 09:49 PM

Gson@Expose アノテーションを使用して、フィールドがシリアル化または逆シリアル化のために公開されているかどうか (含まれているかどうか) をマークできます。 @Expose アノテーションは 2 つのパラメータを取ることができ、各パラメータはブール値で、値 true または false を取ることができます。 GSON が @Expose アノテーションに反応できるようにするには、GsonBuilder クラスを使用して Gson インスタンスを作成し、excludeFieldsWithoutExposeAnnotation() メソッドを呼び出す必要があります。これにより、Expose アノテーションのないすべてのフィールドがシリアル化または逆シリアル化から除外されるように Gson が設定されます。構文 publicGsonBuilderexclud

PHP 配列を JSON に変換するためのパフォーマンス最適化のヒント PHP 配列を JSON に変換するためのパフォーマンス最適化のヒント May 04, 2024 pm 06:15 PM

PHP 配列を JSON に変換するためのパフォーマンスの最適化方法には、JSON 拡張機能と json_encode() 関数の使用、文字エスケープを回避するためのバッファーの使用、およびサードパーティのエンコード結果の使用の検討が含まれます。 JSONエンコーディングライブラリ。

MySQL5.7とMySQL8.0の違いは何ですか? MySQL5.7とMySQL8.0の違いは何ですか? Feb 19, 2024 am 11:21 AM

MySQL5.7 と MySQL8.0 は 2 つの異なる MySQL データベース バージョンであり、それらの間には主な違いがいくつかあります: パフォーマンスの向上: MySQL8.0 では、MySQL5.7 と比較してパフォーマンスがいくつか向上しています。これには、より優れたクエリ オプティマイザー、より効率的なクエリ実行プランの生成、より優れたインデックス作成アルゴリズムと並列クエリなどが含まれます。これらの改善により、クエリのパフォーマンスとシステム全体のパフォーマンスが向上します。 JSON サポート: MySQL 8.0 では、JSON データのストレージ、クエリ、インデックス作成など、JSON データ型のネイティブ サポートが導入されています。これにより、MySQL での JSON データの処理と操作がより便利かつ効率的になります。トランザクション機能: MySQL8.0 では、アトミックなどのいくつかの新しいトランザクション機能が導入されています。

golang の json.MarshalIndent 関数を使用して、構造をフォーマットされた JSON 文字列に変換します。 golang の json.MarshalIndent 関数を使用して、構造をフォーマットされた JSON 文字列に変換します。 Nov 18, 2023 pm 01:59 PM

golang で json.MarshalIndent 関数を使用して、構造をフォーマットされた JSON 文字列に変換します。Golang でプログラムを作成するとき、多くの場合、構造を JSON 文字列に変換する必要があります。このプロセスでは、 json.MarshalIndent 関数が役に立ちます。フォーマットされた出力。以下では、この関数の使用方法と具体的なコード例を詳しく説明します。まず、データを含む構造体を作成しましょう。以下は目安です

C# 開発で XML および JSON データ形式を処理する方法 C# 開発で XML および JSON データ形式を処理する方法 Oct 09, 2023 pm 06:15 PM

C# 開発で XML および JSON データ形式を処理する方法には、特定のコード サンプルが必要です。現代のソフトウェア開発では、XML と JSON の 2 つのデータ形式が広く使用されています。 XML (Extensible Markup Language) はデータの保存と送信に使用されるマークアップ言語であり、JSON (JavaScript Object Notation) は軽量のデータ交換形式です。 C# 開発では、XML と JSON データの処理と操作が必要になることがよくありますが、この記事では、C# を使用してこれら 2 つのデータ形式を処理し、添付する方法に焦点を当てます。

Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか? Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか? May 06, 2024 pm 10:09 PM

Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化を制御します。 シリアル化: @JsonIgnore: プロパティを無視します @JsonProperty: 名前を指定します @JsonGetter: get メソッドを使用します @JsonSetter: set メソッドを使用します Deserialization: @JsonIgnoreProperties: プロパティ @ JsonProperty を無視します:名前を指定 @JsonCreator: コンストラクターを使用 @JsonDeserialize: カスタム ロジック

PHP の json_encode() 関数を使用して、配列またはオブジェクトを JSON 文字列に変換し、出力をフォーマットします。 PHP の json_encode() 関数を使用して、配列またはオブジェクトを JSON 文字列に変換し、出力をフォーマットします。 Nov 03, 2023 pm 03:44 PM

PHP の json_encode() 関数を使用して配列またはオブジェクトを JSON 文字列に変換し、出力をフォーマットすると、異なるプラットフォームや言語間でのデータの転送や交換が容易になります。この記事では、json_encode() 関数の基本的な使い方と、JSON 文字列をフォーマットして出力する方法を紹介します。 1. json_encode() 関数の基本的な使い方 json_encode() 関数の基本的な構文は次のとおりです。

See all articles