Heim > Backend-Entwicklung > PHP-Tutorial > Problem bei der Kodierungskonvertierung zwischen JSON und PHP

Problem bei der Kodierungskonvertierung zwischen JSON und PHP

不言
Freigeben: 2023-03-24 17:16:01
Original
1366 Leute haben es durchsucht

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/>
Nach dem Login kopieren
Nach dem Login kopieren
<br/>
Nach dem Login kopieren
Nach dem Login kopieren

<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):

<br/>

☆ Rezeptionscode:

var arr = {"name":"张伟","age":19}; //此时生成的是json的数组
Nach dem Login kopieren
arr = json.stringify(arr); //此时将arr转换成 json的字符串类型
Nach dem Login kopieren
$.ajax({
               type:"post",
                url:url,
                data:{arr:arr}, //将转换成字符串类型的json传递给php后台,换换成字符串类型后可以一次性传递多个数据
                success:function(res){
                   
   
                    console.log(res);
                    
                }
            });
Nach dem Login kopieren

<br/>

☆Backend-Code (wenn nur Zeichenfolgen übergeben werden):

map = $_POST[&#39;arr&#39;];
            
 $map = json_decode($map);//json对象 解码之后PHP可以使用,但要用json的方法在后台使用$map->name 
 echo $map->name; // 会输出到res中, 通过consolve.log(res) 可以直接输出
Nach dem Login kopieren

<br/>

<br/>

Frage

<br/>

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

<br/>

$1 Die erste Methode:

echo, Sie müssen es selbst codieren und dann die JSON-Zeichenfolge

<br/>< ausgeben 🎜>

Zu diesem Zeitpunkt gibt es zwei Situationen: Eine besteht darin, die von der Rezeption empfangene JSON-Zeichenfolge zurückzugeben, und die andere darin, im Hintergrund ein neues Array zu erstellen und an die Rezeption zurückzugeben.

<br/>

$1.1 Der Hintergrund empfängt die Vordergrunddaten und gibt dieselben Daten zurück

$map = $_POST[&#39;arr&#39;];//从前台传递过来的$map
$map = json_decode($map);//json对象 解码之后给php后台使用
.....
$map = json_encode($map);//对json数组进行编码生成json字符串
echo $map; //输出$map到前台
Nach dem Login kopieren
$1.2 Der Hintergrund erstellt das Programm und kehrt zurück in den Vordergrund

$mapN = json_encode($mapN);//在后台自行创建的数组,在传递给前台之前同样需要进行编码
echo $mapN;
Nach dem Login kopieren
$1.3 Vordergrundoperation

res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组
console.log(res.name);
Nach dem Login kopieren

<br/>

$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

<br/>

<br/>

<br/>

Zu diesem Zeitpunkt gibt es zwei Situationen: Eine besteht darin, die von der Rezeption empfangene JSON-Zeichenfolge zurückzugeben, und die andere darin, im Hintergrund ein neues Array zu erstellen und Rückkehr zur Rezeption.

<br/>

$2.1 Empfangen Sie das Programm aus dem Vordergrund und bringen Sie es direkt vom Hintergrund in den Vordergrund zurück

$map = $_POST[&#39;arr&#39;];
$map = json_decode($map);//json对象 解码之后
$this->ajaxReturn($map,&#39;json&#39;);
Nach dem Login kopieren

<br/>

$2.2 Erstellen Sie das Programm im Hintergrund und Rückkehr in den Vordergrund

<br/>

$mapN = array("name"=>"zhangwei");
$this->ajaxReturn($mapN,&#39;json&#39;);// 此时不需要json_encode() ,前台通过mapN.name 或者mapN[&#39;name&#39;]输出
Nach dem Login kopieren
$2,3 Bedienung an der Rezeption

res = eval("("+res+")");//通过res将从后台传过来的json字符串转换成数组
console.log(res.name);
Nach dem Login kopieren



$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-Typ

ajaxreturn Die Funktion json_encode wird automatisch zum Codieren aufgerufen


Das Gleiche zwischen den beiden:

Nach der Übergabe des JSON Wert an die Rezeption senden, eval ("("+res+ ")"), um ihn in ein JSON-Array umzuwandeln, können Sie




$4 Hinweis:

Hier 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

Echo

im 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:

Array-Name ['Schlüsselname']

Oder rufen Sie


mit

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 ->key

2. 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-Zeichenkodierung

So 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage