Heim > Artikel > Backend-Entwicklung > Problem bei der Kodierungskonvertierung zwischen JSON und PHP
Dieser Artikel stellt hauptsächlich das Problem der Codierungskonvertierung zwischen JSON und PHP vor. Jetzt kann ich ihn mit allen teilen, die ihn brauchen.
<br/>
<br/>
※ Prämisse: Umgang mit Datenkonvertierungssituationen, die auftreten können, wenn JSON und PHP Daten im Front- bzw. Backend gegenseitig übertragen (hauptsächlich für Arrays):
☆ Rezeptionscode:
var arr = {"name":"张伟","age":19}; //此时生成的是json的数组
arr = json.stringify(arr); //此时将arr转换成 json的字符串类型
$.ajax({ type:"post", url:url, data:{arr:arr}, //将转换成字符串类型的json传递给php后台,换换成字符串类型后可以一次性传递多个数据 success:function(res){ console.log(res); } });
☆Backend-Code (wenn nur Zeichenfolgen übergeben werden):
map = $_POST['arr']; $map = json_decode($map);//json对象 解码之后PHP可以使用,但要用json的方法在后台使用$map->name echo $map->name; // 会输出到res中, 通过consolve.log(res) 可以直接输出
Frage
In Bezug auf die Übergabe von Arrays zwischen PHP und JSON gibt es zwei Möglichkeiten, Daten vom Hintergrund nach vorne zu übertragen: echo, ajaxreturn
$1 Die erste Methode:
echo, Sie müssen es selbst codieren und dann die JSON-Zeichenfolge
$1.1 Der Hintergrund empfängt die Vordergrunddaten und gibt dieselben Daten zurück
$map = $_POST['arr'];//从前台传递过来的$map $map = json_decode($map);//json对象 解码之后给php后台使用 ..... $map = json_encode($map);//对json数组进行编码生成json字符串 echo $map; //输出$map到前台$1.2 Der Hintergrund erstellt das Programm und kehrt zurück in den Vordergrund
$mapN = json_encode($mapN);//在后台自行创建的数组,在传递给前台之前同样需要进行编码 echo $mapN;$1.3 Vordergrundoperation
res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组 console.log(res.name);
$2 Zweite Methode:
ajaxreturn , übergeben Arrays müssen nicht codiert werden. Standardmäßig wird die Zeichenfolgenform von JSON übergeben, für die Konvertierung im Frontend ist jedoch eine Auswertung erforderlich. Konvertieren Sie die JSON-Zeichenfolge in ein Array
$map = $_POST['arr']; $map = json_decode($map);//json对象 解码之后 $this->ajaxReturn($map,'json');
$mapN = array("name"=>"zhangwei"); $this->ajaxReturn($mapN,'json');// 此时不需要json_encode() ,前台通过mapN.name 或者mapN['name']输出$2,3 Bedienung an der Rezeption
res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组 console.log(res.name);
$3 Zuschlag:
Der Unterschied zwischen echo und ajaxreturn hinsichtlich der Übertragung von Daten vom Hintergrund in den Vordergrund: echo kodiert das PHP-Array nicht in ein JSON-Übertragungsformat – JSON String-Typajaxreturn Die Funktion json_encode wird automatisch zum Codieren aufgerufenHier kann der Hintergrund Daten an den Front-End-Erfolg zurückgeben: Funktion (res) über Echo oder Ajaxreturn
Aber die Daten nach der Rückgabe Verschiedene Verwendungsmethoden:
1. String-Typ: Durch
Echoim Hintergrund können Sie den String direkt ausgeben an die res in der Rezeption,
2. Array-Typ: Ob es sich um den von der Rezeption übergebenen String-Array-Typ von JSON oder um den in generierten Array-Typ handelt Im Hintergrund kann die Methode, die über Ajaxreturn an die Rezeption zurückgegeben wird, sein:
Oder rufen Sie
array name.keyname
Tipps:
1. Übergeben Sie die JSON-Zeichenfolge an die Rückseite im Front Desk (selbst ist ein Array, aber es wird über stringify
im Front Desk in einen JSON-String umgewandelt. Im Hintergrund wird json_decode zum Dekodieren benötigt und kann zur Verwendung in ein PHP-Array umgewandelt werden ->key2. Wenn das im Hintergrund erstellte Array über json_encode in einen JSON-String konvertiert wird, müssen die Daten nach der Übermittlung an die Rezeption über weitergeleitet werden res = eval("("+res+")"); In JSON-Array konvertieren, Front-End-Aufrufmethode:
Array-Name['keyname'] oder Array-Name.Schlüsselname Verwandte Empfehlungen:
Konvertierung der PHP-ZeichenkodierungSo lösen Sie verstümmelte Zeichen in der PHP-Kodierung Konvertierung
Das obige ist der detaillierte Inhalt vonProblem bei der Kodierungskonvertierung zwischen JSON und PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!