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

Problem bei der Kodierungskonvertierung zwischen JSON und PHP

不言
不言Original
2018-04-23 11:41:241323Durchsuche

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[&#39;arr&#39;];
            
 $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


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.


$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到前台
$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




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.


$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;);


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


$mapN = array("name"=>"zhangwei");
$this->ajaxReturn($mapN,&#39;json&#39;);// 此时不需要json_encode() ,前台通过mapN.name 或者mapN[&#39;name&#39;]输出
$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-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!

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