In PHP kann die Konvertierung eines Arrays in das JSON-Format über die Funktion json_encode
erreicht werden. Diese Funktion akzeptiert einen Parameter $value
und konvertiert ihn in eine JSON-Formatzeichenfolge. Allerdings setzt die Funktion json_encode
den Attributnamen des Objekts beim Generieren einer JSON-Zeichenfolge standardmäßig in doppelte Anführungszeichen, was sich auf die Verwendung einiger Front-End-Frameworks auswirkt. Wie kann man also dafür sorgen, dass die Funktion json_encode
die doppelten Anführungszeichen in der generierten JSON-Zeichenfolge entfernt? 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"}
可以看到,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_encode
generiert wird: 🎜rrreee🎜Das Ausgabeergebnis des obigen Codes lautet: 🎜rrreee🎜Wie Sie sehen können, ist das Attribut Namen in der JSON-Zeichenfolge werden alle in doppelte Anführungszeichen gesetzt. 🎜🎜Wenn wir die doppelten Anführungszeichen entfernen möchten, können wir den Reflexionsmechanismus von PHP verwenden. Wenn der Leser mit Reflexion nicht vertraut ist, können Sie nach der Lektüre dieses Artikels mehr darüber erfahren. 🎜🎜Das Folgende ist ein Beispiel für das Entfernen doppelter Anführungszeichen aus Attributnamen in einer JSON-Zeichenfolge: 🎜rrreee🎜Im obigen Code verwenden wir eine benutzerdefinierte Klasse JsonWithoutQuotes
, die ein Array als Parameter empfängt und diese speichert im Attribut $originalData
. Die Methode getJson
wird verwendet, um das Array in $originalData
in einen JSON-String ohne doppelte Anführungszeichen umzuwandeln: 🎜🎜Zuerst rufen wir die Funktion json_encode
auf Konvertieren Sie die Originaldaten in eine JSON-Zeichenfolge und verwenden Sie dann die in PHP integrierte Methode preg_replace_callback
für reguläre Ausdrücke, um den Attributnamen in der JSON-Zeichenfolge durch die in der Rückruffunktion zurückgegebene Zeichenfolge zu ersetzen. Die Funktion der Rückruffunktion besteht darin, zu bestimmen, ob eine übereinstimmende Zeichenfolge vom Typ Zeichenfolge ist. Wenn dies der Fall ist, geben Sie die Zeichenfolge ohne doppelte Anführungszeichen zurück. 🎜rrreee🎜Tatsächlicher Laufeffekt: 🎜rrreee🎜Sie können sehen, dass die doppelten Anführungszeichen aus den Attributnamen in der JSON-Zeichenfolge entfernt wurden. 🎜🎜Zusammenfassung: 🎜🎜Es ist sehr praktisch, die mit PHP gelieferte Funktion json_encode
zu verwenden, um ein Array in einen JSON-String zu konvertieren. In manchen Fällen müssen jedoch doppelte Anführungszeichen bei Eigenschaftsnamen in JSON-Strings entfernt werden. Zu diesem Zeitpunkt können wir den PHP-Reflexionsmechanismus verwenden, um dieses Ziel zu erreichen. 🎜Das obige ist der detaillierte Inhalt vonSo konvertieren Sie ein PHP-Array in JSON und entfernen doppelte Anführungszeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!