json_encodeLiefert die JSON-Darstellung eines Wertes
&reftitle.description;
stringfalsejson_encodemixedvalueintflags0intdepth512
Gibt eine Zeichenkette zurück, die die JSON-Darstellung des übergebenen
value beinhaltet. Wenn der Parameter ein &array;
oder &object; ist, wird er rekursiv serialisiert.
Wenn ein Wert, der serialisiert werden soll, ein Objekt ist, dann werden
standardmäßig nur die öffentlich sichtbaren Eigenschaften einbezogen.
Alternativ dazu kann eine Klasse
JsonSerializable implementieren, um zu
steuern, wie ihre Werte zu JSON serialisiert werden.
Die Kodierung wird von den übergebenen flags
beeinflusst und zusätzlich hängt die Kodierung von Float-Werten vom Wert
von serialize_precision ab.
&reftitle.parameters;
value
Der zu kodierende value. Kann von jedem Typ
außer &resource; sein.
Alle Zeichenketten müssen in UTF-8 kodiert sein.
&json.implementation.superset;
flags
Eine Bitmaske bestehend aus
JSON_FORCE_OBJECT,
JSON_HEX_QUOT,
JSON_HEX_TAG,
JSON_HEX_AMP,
JSON_HEX_APOS,
JSON_INVALID_UTF8_IGNORE,
JSON_INVALID_UTF8_SUBSTITUTE,
JSON_NUMERIC_CHECK,
JSON_PARTIAL_OUTPUT_ON_ERROR,
JSON_PRESERVE_ZERO_FRACTION,
JSON_PRETTY_PRINT,
JSON_UNESCAPED_LINE_TERMINATORS,
JSON_UNESCAPED_SLASHES,
JSON_UNESCAPED_UNICODE,
JSON_THROW_ON_ERROR. Das Verhalten dieser
Konstanten ist auf der Seite über die
JSON-Konstanten beschrieben.
depth
Setzt die maximale Verschachtelungstiefe. Muss größer als Null sein.
&reftitle.returnvalues;
Gibt einen JSON-kodierten &string; zurück. &return.falseforfailure;
&reftitle.changelog;
&Version;&Description;7.3.0
Die flags-Konstante
JSON_THROW_ON_ERROR wurde hinzugefügt.
7.2.0
Die flags-Konstanten
JSON_INVALID_UTF8_IGNORE und
JSON_INVALID_UTF8_SUBSTITUTE wurden hinzugefügt.
7.1.0
Die flags-Konstante
JSON_UNESCAPED_LINE_TERMINATORS wurde
hinzugefügt.
7.1.0
serialize_precision
wird nun anstatt precision
verwendet, wenn Werte vom Typ float (Gleitkommazahlen)
kodiert werden.
&reftitle.examples;
Ein json_encode-Beispiel
1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
]]>
&example.outputs;
Ein json_encode-Beispiel, das den Einsatz einiger
Optionen zeigt
',"'bar'",'"baz"','&blong&', "\xc3\xa9");
echo "Normal: ", json_encode($a), "\n";
echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n";
echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n";
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n";
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n";
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n";
echo "All: ", json_encode($a, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE), "\n\n";
$b = array();
echo "Ausgabe eines leeren Arrays als Array: ", json_encode($b), "\n";
echo "Ausgabe eines leeren Arrays als Objekt: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n";
$c = array(array(1,2,3));
echo "Ausgabe eines nichtassoziativen Arrays als Array: ", json_encode($c), "\n";
echo "Ausgabe eines nichtassoziativen Arrays als Objekt: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n";
$d = array('foo' => 'bar', 'baz' => 'long');
echo "Assoziative Arrays werden immer als Objekt ausgegeben: ", json_encode($d), "\n";
echo "Assoziative Arrays werden immer als Objekt ausgegeben: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n";
?>
]]>
&example.outputs;
","'bar'","\"baz\"","&blong&","\u00e9"]
Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
Apos: ["","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
Quot: ["","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
Amp: ["","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
Unicode: ["","'bar'","\"baz\"","&blong&","é"]
All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"]
Ausgabe eines leeren Arrays als Array: []
Ausgabe eines leeren Arrays als Objekt: {}
Ausgabe eines nichtassoziativen Arrays als Array: [[1,2,3]]
Ausgabe eines nichtassoziativen Arrays als Objekt: {"0":{"0":1,"1":2,"2":3}}
Assoziative Arrays werden immer als Objekt ausgegeben: {"foo":"bar","baz":"long"}
Assoziative Arrays werden immer als Objekt ausgegeben: {"foo":"bar","baz":"long"}
]]>
JSON_NUMERIC_CHECK-Option-Beispiel
]]>
&example.outputs.similar;
string(7) "+123123"
[1]=>
string(7) "-123123"
[2]=>
string(5) "1.2e3"
[3]=>
string(7) "0.00001"
}
string(28) "[123123,-123123,1200,1.0e-5]"
Zeichenketten, die unsachgemäß formatierte Zahlen enthalten
array(2) {
[0]=>
string(13) "+a33123456789"
[1]=>
string(4) "a123"
}
string(24) "["+a33123456789","a123"]"
]]>
Beispiel für sequentielle und nicht sequentielle Arrays
"foo", 2=>"bar", 3=>"baz", 4=>"blong");
var_dump(
$nonsequential,
json_encode($nonsequential)
);
echo PHP_EOL."Sequentielles Array mit einem entfernten Schlüssel".PHP_EOL;
unset($sequential[1]);
var_dump(
$sequential,
json_encode($sequential)
);
?>
]]>
&example.outputs;
string(3) "foo"
[1]=>
string(3) "bar"
[2]=>
string(3) "baz"
[3]=>
string(5) "blong"
}
string(27) "["foo","bar","baz","blong"]"
Nicht-sequentielles Array
array(4) {
[1]=>
string(3) "foo"
[2]=>
string(3) "bar"
[3]=>
string(3) "baz"
[4]=>
string(5) "blong"
}
string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}"
Sequentielles Array mit einem entfernten Schlüssel
array(3) {
[0]=>
string(3) "foo"
[2]=>
string(3) "baz"
[3]=>
string(5) "blong"
}
string(33) "{"0":"foo","2":"baz","3":"blong"}"
]]>
JSON_PRESERVE_ZERO_FRACTION-Option-Beispiel
]]>
&example.outputs;
&reftitle.notes;
Falls ein Fehler beim kodieren auftritt, kann
json_last_error verwendet werden, um die genaue
Ursache des Fehlers festzustellen.
Wenn ein Array kodiert wird und die Schlüssel keine kontinuierliche
numerische Folge, beginnend bei 0, sind, werden alle Schlüssel als
Zeichenketten kodiert und explizit für jedes Schlüssel-Wert-Paar
angegeben.
Wie der Referenz JSON-Encoder gibt auch json_encode
einen einfachen Wert (also weder ein Objekt noch ein Array) aus, wenn ein
&string;, &integer;, &float; oder &boolean; als Eingabe für
value übergeben wird. Während die meisten Decoder
diese Werte als gültiges JSON akzeptieren, könnte es einige geben die dies
ablehnen, da die Spezifikationen in diesem Punkt mehrdeutig sind.
Um es zusammenzufassen: Prüfen Sie immer, ob ihr JSON-Decoder die Ausgabe,
die Sie mittels json_encode erzeugen, verarbeiten
kann.
&reftitle.seealso;
JsonSerializablejson_decodejson_last_errorjson_last_error_msgserialize