Diese Funktion wird hauptsächlich zum Konvertieren von Arrays und Objekten in das JSON-Format verwendet. Schauen wir uns zunächst ein Beispiel für die Array-Konvertierung an:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr);
und das Ergebnis ist
{"a":1,"b":2,"c":3,"d":4,"e":5}
. Schauen wir uns dann ein Beispiel für die Objektkonvertierung an:
$obj->body = 'another post'; $obj->id = 21; $obj->approved = true; $obj->favorite_count = 1; $obj->status = NULL; echo json_encode($obj);
und das Ergebnis ist
{ "body":"another post", "id":21, "approved":true, "favorite_count":1, "status":null }
Da JSON nur UTF-8-kodierte Zeichen akzeptiert, müssen die Parameter von json_encode() UTF-8-kodiert sein, andernfalls erhalten Sie leere Zeichen oder Null. Wenn Chinesisch die GB2312-Kodierung verwendet oder Fremdsprachen die ISO-8859-1-Kodierung verwenden, sollte diesem Punkt besondere Aufmerksamkeit gewidmet werden.
PHP unterstützt zwei Arten von Arrays: eines ist ein indiziertes Array, das nur „Wert“ (Wert) speichert, und das andere ist ein indiziertes Array, das „Name“ speichert value“ Ein assoziatives Array von Paaren (Name/Wert).
Da Javascript keine assoziativen Arrays unterstützt, konvertiert json_encode() nur das indizierte Array in das Array-Format und das assoziative Array in das Objektformat.
Zum Beispiel gibt es jetzt ein Index-Array
$arr = Array('one', 'two', 'three'); echo json_encode($arr);
Das Ergebnis ist:
["eins", "zwei", "drei"]
Wenn Sie es in ein assoziatives Array ändern:
$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');echo json_encode($arr);
ändert sich das Ergebnis:
{"1": "eins", "2": "zwei", "3". : „drei“🎜>
Beachten Sie, dass sich das Datenformat von „[]“ (Array) zu „{}“ (Objekt) geändert hat. Wenn Sie „Index-Array“ in „Objekt“ erzwingen müssen, können Sie so schreiben:json_encode( (object)$arr );
json_encode ( $arr, JSON_FORCE_OBJECT );
class Foo { const ERROR_CODE = '404'; public $public_ex = 'this is public'; private $private_ex = 'this is private!'; protected $protected_ex = 'this should be protected'; public function getErrorCode() { return self::ERROR_CODE; } }
$foo = new Foo; $foo_json = json_encode($foo); echo $foo_json;
{"public_ex":"this is public"}
$json = '{"foo": 12345}'; $obj = json_decode($json); print $obj->{'foo'}; // 12345
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
object(stdClass)#1 (5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json,true));
array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }
$bad_json = "{ 'bar': 'baz' }"; $bad_json = '{ bar: "baz" }'; $bad_json = '{ "bar": "baz", }';
//由JSON字符串转换为JSON对象var obj = eval('(' + str + ')');
var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
Alert(obj.name);Alert(obj.sex);
Lösung für das Problem, dass json_decode das spezielle Fragezeichen in PHP nicht analysieren kann
Wie PHP json_decode implementiert unescaped Chinesische Methode Einführung
Vergleichen Sie den Unterschied zwischen json_encode und json_decode
Das obige ist der detaillierte Inhalt vonTeilen Sie die Verwendung von json_decode und json_encode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!