/ / was ist anders zwischen {und [in json mit json_encode in php - php, json

Was ist anders als zwischen {und [in json mit json_encode in php - php, json

Was ist anders zwischen {und [in json

Modell 1:

"cell": { "id": "3961" }

Modell 2:

"cell": [ "id": "3961" ]

Wie kann ich Modell 1 auf 2 über json_encode übertragen?

Antworten:

3 für die Antwort № 1

Modell 2 ist kein gültiger JSON. JSON erlaubt Objekte mit benannten Eigenschaften (Ihre Modell 1), aber Arrays haben möglicherweise keine benannten Schlüssel.

Deshalb, json_encode kann Ihr nicht ausgeben Modell 2.


2 für die Antwort № 2

{ ist ein Objekt, [ ist ein Array.

Siehe die offizielle Dokumente.

In Ihrem Fall ist das erste Beispiel ein normales Objekt mit einer Eigenschaft namens id. Das zweite Beispiel ist ein assoziatives Array mit einem Index namens id. JSON hat keine assoziativen Arrays. Das zweite Beispiel ist ungültiges JSON.

Dies liegt daran, dass JSON JavaScript istObjektbenachrichtigung und JavaScript kennt keine assoziativen Arrays. Stattdessen können Sie mit JavaScript einem Objekt dynamisch neue Eigenschaften hinzufügen und mit den Klammern auf alle Objekteigenschaften zugreifen: Object["property"].

Objekte sind also (Art) assoziative Arrays in JavaScript und daher in JSON.

Seit der json_encode()-function encodes erstellt den JSON-String aus dem angegebenen Objekt. Sie müssen ein Objekt anstelle eines Arrays übergeben.


1 für die Antwort № 3

Ihr Modell 2 ist kein gültiger JSON. JSON - Arrays dürfen keine Schlüssel enthalten, für die Objekte in JavaScript bestimmt sind ({"key":"value"})

Sie können jedoch einen JSON-String in die assoziativen Arrays von PHP dekodieren (json_decode($json, TRUE)), wenn Sie Arrays anstelle von Objekten erstellen möchten.


1 für die Antwort № 4
php > echo json_encode(array("a", "b"));
["a","b"]
php > echo json_encode(array("a" => "A", "b" => "B"));
{"a":"A","b":"B"}

[-> Numerisches Array
{-> Assoziatives Array in PHP, Objekt in JavaScript