PHP では、配列を JSON 形式に変換するには、json_encode
関数を使用します。この関数はパラメータ $value
を受け取り、それを JSON 形式の文字列に変換します。ただし、デフォルトでは、json_encode
関数は、JSON 文字列を生成するときにオブジェクトの属性名を二重引用符で囲みます。これは、一部のフロントエンド フレームワークの使用に影響します。では、json_encode
関数を使用して、生成された JSON 文字列内の二重引用符を削除するにはどうすればよいでしょうか?
まず、デフォルトで json_encode
関数によって生成される JSON 文字列形式を見てみましょう:
$arr = array('name' => '张三', 'age' => 18, 'gender' => 'male'); $jsonStr = json_encode($arr); echo $jsonStr;
上記のコードの出力結果は次のとおりです:
{"name":"张三","age":18,"gender":"male"}
Yes ご覧のとおり、JSON 文字列内の属性名はすべて二重引用符で囲まれています。
二重引用符を削除したい場合は、PHP のリフレクション メカニズムを使用できます。読者がリフレクションに詳しくない場合は、この記事を読んだ後に学習することができます。
次は、JSON 文字列の属性名から二重引用符を削除する例です。
class JsonWithoutQuotes { public function __construct($data) { $this->originalData = $data; } public function getJson() { $data = $this->originalData; $jsonData = json_encode($data); $jsonData = preg_replace_callback( '/"(.*?)":/is', function($matches) { $match = $matches[1]; return is_string($match) ? $match.":" : $match; }, $jsonData); return $jsonData; } }
上記のコードでは、カスタム クラス JsonWithoutQuotes
を使用します。配列をパラメータとして取得し、それを $originalData
プロパティに保存します。 getJson
メソッドは、$originalData
の配列を二重引用符なしの JSON 文字列に変換するために使用されます。
まず、json_encode
を呼び出します。関数は元のデータを JSON 文字列に変換し、PHP の組み込み正規表現エンジン preg_replace_callback
メソッドを使用して、JSON 文字列内の属性名をコールバック関数で返された文字列に置き換えます。コールバック関数の機能は、一致した文字列が文字列型であるかどうかを判断することです。文字列型である場合は二重引用符なしで文字列を返し、そうでない場合は文字列をそのまま返します。
$arr = array('name' => '张三', 'age' => 18, 'gender' => 'male'); $jsonStr = (new JsonWithoutQuotes($arr))->getJson(); echo $jsonStr;
実際の実行効果:
{name:"张三",age:18,gender:"male"}
JSON 文字列の属性名から二重引用符が削除されていることがわかります。
概要:
PHP に付属の json_encode
関数を使用して配列を JSON 文字列に変換すると非常に便利です。ただし、場合によっては、JSON 文字列内のプロパティ名から二重引用符を削除する必要があります。現時点では、PHP リフレクション メカニズムを使用してこの目標を達成できます。
以上がPHP配列をJSONに変換し、二重引用符を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。