Heim  >  Artikel  >  Backend-Entwicklung  >  So konvertieren Sie ein Objektarray in PHP in das JSON-Format

So konvertieren Sie ein Objektarray in PHP in das JSON-Format

PHPz
PHPzOriginal
2023-04-20 13:55:481437Durchsuche

Bei der Webentwicklung ist es häufig erforderlich, ein Objektarray zur Verarbeitung an das Frontend zu übertragen, und diese Daten müssen normalerweise im JSON-Format übertragen werden. Viele Sprachen in Util bieten Tools zum Konvertieren von Objekten in das JSON-Format, und PHP ist keine Ausnahme. In diesem Artikel wird die Methode zum Konvertieren eines Objektarrays in das JSON-Format in PHP ausführlich vorgestellt.

1. Verwendung der Funktion json_encode()

PHP stellt die Funktion json_encode() zum Konvertieren des Objektarrays in das JSON-Format bereit. Die Methode zur Verwendung dieser Funktion ist wie folgt:

Beispielcode:

<?php
$person = array(
   &#39;name&#39; => 'jack',
   'age' => 18,
   'city' => 'beijing'
);

echo json_encode($person);
?>

Ausgabeergebnis:

{"name":"jack","age":18,"city":"beijing"}

Wie Sie sehen können, besteht die Funktion der Funktion json_encode() darin, ein Array oder Objekt in eine Zeichenfolge im JSON-Format zu konvertieren. Im Beispiel definieren wir ein Objekt $person und verwenden dann die Funktion json_encode(), um das $person-Objekt in einen String im JSON-Format zu konvertieren und auszugeben.

2. Verwenden Sie die Funktion json_encode() mit Parametern

Die Funktion json_encode() kann zusätzlich zur Konvertierung eines Objektarrays in einen String im JSON-Format auch 4 Parameter akzeptieren.

$a. $value-Parameter

$value-Parameter wird verwendet, um das Objekt (oder Array) zu übergeben, das konvertiert werden muss. Der $value-Parameter kann ein beliebiger PHP-Typ außer einem Ressourcentyp sein. Bei konkreter Verwendung werden wir feststellen, dass ein verschachteltes oder am stärksten verschachteltes Array oder Objekt mehrere Schlüssel-Wert-Paare, Verschachtelungen, Arrays oder Objekte enthalten kann. Wenn diese Situation auftritt, können Sie diese Syntax verwenden, um ein neues Array oder Objekt zu erstellen.

Beispielcode:

<?php
//嵌套数组和对象的例子
$person = array(
   &#39;name&#39; => 'jack',
   'age' => 18,
   'city' => 'beijing',
   'hobby' => array(
       'reading',
       'music',
       'sports',
       'travel'
   ),
   'friends' => array(
       array(
           'name' => 'tom',
           'phone' => '13812999010'
       ),
       array(
           'name' => 'lily',
           'phone' => '13812999020'
       )
   )
);
//使用json_encode()的方式将$person数组转换为json格式字符串
echo json_encode($person);
?>

Ausgabeergebnis:

{"name":"jack","age":18,"city":"beijing","hobby":["reading","music","sports","travel"],"friends":[{"name":"tom","phone":"13812999010"},{"name":"lily","phone":"13812999020"}]}

Wie Sie sehen können, unterstützt die Funktion json_encode() verschachtelte Arrays und Objekte, was für einige komplexere Datenformate sehr praktisch und praktisch ist.

$b. Der $options-Parameter

Der $options-Parameter wird verwendet, um anzugeben, wie Objekte und Arrays konvertiert werden. Wenn Sie beispielsweise die UTF-8-Codierung in der ausgegebenen JSON-Zeichenfolge deaktivieren möchten, können Sie die Option JSON_UNESCAPED_UNICODE verwenden. Diese Option bewirkt, dass alle nicht-englischen Zeichen in der Ausgabe in ihrer ursprünglichen Darstellung angezeigt werden.

Beispielcode:

<?php
$person = array(
   &#39;name&#39; => 'jack',
   'age' => 18,
   'city' => 'beijing'
);

echo json_encode($person, JSON_UNESCAPED_UNICODE);
?>

Ausgabeergebnis:

{"name":"jack","age":18,"city":"beijing"}

$c. $ Depth-Parameter

Der $ Depth-Parameter wird verwendet, um die maximale Tiefe des Objekts oder Arrays anzugeben, bevor es in einen JSON-String konvertiert wird wenn es größer als 0 ist, andernfalls ist es ungültig. Wenn die Datentiefe die angegebene Tiefe überschreitet, gibt die Funktion json_encode() FALSE zurück. Standardmäßig ist der $ Depth-Parameter 512.

Beispielcode:

<?php
$person = array(
   &#39;name&#39; => 'jack',
   'age' => 18,
   'city' => 'beijing',
   'hobby' => array(
       'reading',
       'music',
       'sports',
       'travel'
   ),
   'friends' => array(
       array(
           'name' => 'tom',
           'phone' => '13812999010'
       ),
       array(
           'name' => 'lily',
           'phone' => '13812999020'
       )
   )
);

echo json_encode($person, JSON_PRETTY_PRINT, 3);
?>

Ausgabeergebnis:

{
   "name": "jack",
   "age": 18,
   "city": "beijing",
   "hobby": [
       "reading",
       "music",
       "sports",
       "travel"
   ],
   "friends": [
       {
           "name": "tom",
           "phone": "13812999010"
       },
       {
           "name": "lily",
           "phone": "13812999020"
       }
   ]
}

Wir können sehen, dass durch die Verwendung der Parameter JSON_PRETTY_PRINT und $ Depth die ausgegebene JSON-Zeichenfolge formatiert und das gesamte Objekt eingerückt wird.

$d. $reserved-Parameter

Der $reserved-Parameter gibt die Maßnahmen an, die ergriffen werden sollen, wenn der Mitgliedsname im Objekt oder Array mit PHP-reservierten Wörtern in Konflikt steht. Die Standardaktion besteht darin, einen Unterstrich hinzuzufügen. Dieser Parameter ist nur wirksam, wenn JSON_FORCE_OBJECT als Option verwendet wird.

3. Ausnahmebehandlung

Bei Verwendung der Funktion json_encode() für die JSON-Codierung können einige Ausnahmen auftreten, die eine besondere Behandlung erfordern, da die Funktion json_encode() sonst nicht ordnungsgemäß funktioniert.

$a. Codierungsproblem

Wenn Sie eine ISO-8859-1-codierte Nicht-Unicode-Zeichenfolge in den Namensschlüssel von $person einbetten möchten, schlägt json_encode() fehl. Wenn die entsprechende Zeichenfolge jedoch in Unicode konvertiert wird, ist die Codierung einwandfrei.

Beispielcode:

<?php
$data = array(
   "name" => "Manfred",
   "age" => "31",
   "city" => "车里雅宾斯克",
   "UTF8" => "こんにちは"
);

foreach ($data as $key => $value) {
   if (!mb_detect_encoding($value, 'utf-8', true)) {
       $data[$key] = mb_convert_encoding($value, 'UTF-8', 'ISO-8859-1');
   }
}

echo json_encode($data);
?>

Ausgabeergebnis:

{"name":"Manfred","age":"31","city":"\u8f66\u91cc\u96c6\u5bbe\u65af\u514b","UTF8":"こんにちは"}

Wie Sie sehen können, hat die Funktion json_encode() das Objekt nach der Konvertierung der ISO-8859-1-Zeichenfolge in eine UTF-8-Zeichenfolge erfolgreich in das JSON-Format konvertiert.

$b. Problem mit dem UTF-8-Stücklistenheader

Wenn Sie eine mit dem UTF-8-Stücklistenheader codierte Zeichenfolge im Objektarray enthalten, funktioniert die Funktion json_encode() nicht. Wenn Sie ein Programm schreiben, das die BOM-Header-Kodierung enthält, sollten Sie daher den BOM-Header manuell entfernen, damit bei der Verwendung der Funktion json_encode() keine Probleme auftreten.

c. Probleme mit Multibyte-Arrays

Die Funktion json_encode() akzeptiert nur korrekte UTF-8-Zeichenfolgen und akzeptiert keine anderen Multibyte-Codierungsschemata. Wenn das Objektarray diese Codierungsschemata enthält, müssen Sie sie mit der Funktion mb_convert_encoding() in UTF-8-Strings konvertieren.

Beispielcode:

<?php
$array = [&#39;你好&#39;, &#39;こんにちは&#39;, &#39;Привет&#39;];
$json = json_encode($array);
echo $json;

// Error: Malformed UTF-8 characters, possibly incorrectly encoded

Ausgabeergebnis:

Error: Malformed UTF-8 characters, possibly incorrectly encoded

Hier können wir sehen, dass durch die Konvertierung eines Multibyte-Arrays in einen JSON-String eine Ausnahme verursacht wurde. Wir können dieses Problem mithilfe von mb_convert_encoding() lösen.

Beispielcode:

<?php
$array = [&#39;你好&#39;, &#39;こんにちは&#39;, &#39;Привет&#39;];
$json = json_encode(array_map(function ($str) {
   return mb_convert_encoding($str, &#39;UTF-8&#39;, &#39;UTF-8&#39;);
}, $array));
echo $json;
?>

Ausgabeergebnis:

["你好","こんにちは","Привет"]

Kurz gesagt, json_encode() ist eine sehr praktische Funktion, die uns helfen kann, ein Array von Objekten in eine Zeichenfolge im JSON-Format zu konvertieren. Im Einsatz müssen Sie die Lösungen für häufig auftretende Probleme klar verstehen, um diese Funktion besser nutzen zu können.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie ein Objektarray in PHP in das JSON-Format. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn