Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn das Parsen von PHP json_decode fehlschlägt?

Was tun, wenn das Parsen von PHP json_decode fehlschlägt?

藏色散人
藏色散人Original
2021-09-10 09:38:374366Durchsuche

Lösungen für PHP-json_decode-Analysefehler: 1. Erhalten Sie den Fehlercode über json_last_error und andere Funktionen. 2. Entfernen Sie illegale utf8-Zeichen entsprechend dem utf8-Codierungsbereich.

Was tun, wenn das Parsen von PHP json_decode fehlschlägt?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Was soll ich tun, wenn das Parsen von PHP json_decode fehlschlägt?

php json_decode-Analysefehler und Fehlerbehandlung

Wenn Sie einen JSON-Inhalt erhalten, können Sie normalerweise json_decode($content, true) zur Verwendung direkt in ein Array konvertieren, was sehr praktisch ist.
Wenn jedoch mit der Schnittstelle, die Ihnen JSON-Inhalte bereitstellt, etwas nicht stimmt und das bereitgestellte JSON nicht dem Standard entspricht oder einfach Fehler aufweist, müssen Sie einen Weg finden, das Problem zu finden.
Werfen wir zunächst einen Blick auf das Handbuch von json_encode.
https://www.php.net/manual/en/function.json-last-error.php.

Gibt NULL zurück, wenn es fehlschlägt wissen wir, wo der Fehler liegt? Wolltuch?
1. Holen Sie sich den Fehlercode

php hat eine

json_last_error

-Funktion, siehe

https://www.php.net/manual/en/function.json-last-error.php

Es wird der Fehler zurückgegeben Code, der sagt, was bei uns schief gelaufen ist. Sie können den Fehlercode nicht verstehen? Sie können json_last_error_msg verwenden, siehe
https://www.php.net/manual/en/function.json-last-error-msg.php

Aber json_last_error_msg ist nur in der PHP-Version >= 5.5.0 verfügbar, wenn die Version Low, definieren Sie einfach selbst eine.

2. Die Low-Version von PHP-JSON-Fehlercodes sind unvollständig.

Wenn Sie jedoch auf das Handbuch achten, werden Sie feststellen, dass viele der durch

json_last_error

definierten Fehlercodes nur in der High-Version verfügbar sind Die niedrige PHP-Version wird eingestellt. Beispielsweise sagt uns der Fehlercode JSON_ERROR_UTF8 eindeutig, dass der JSON-String illegale utf8-Zeichen enthält, dieser jedoch nur in PHP >= 5.3.3 verfügbar ist. Was sehr tragisch ist, ist, dass mein PHP 5.3.2 ist ist die Verwendung illegaler UTF8-Zeichen. String-Gedanken.

3. Wie man mit illegalen UTF8-Zeichen in JSON umgehtJe nach Codierungsbereich von UTF8 können illegale UTF8-Zeichen entfernt werden.

Siehe https://magp.ie/2011/01/06/remove-non-utf8-characters-from-string-with-php/

 //  $json = '{"a":1,"b":2,"c":3,"d":4,"e":5, "name":"Corwien"}'; 
 $json = '{"a":1,"b":2,"c":3,"d":4,"e":5, "name":}';  //错误的json格式
 $result = json_decode($json, true);
  if(!$result)
  {
        //error handle ,错误处理
        $ret = json_last_error();
        print_r($ret);   //打印为: 4,查错误信息表,可知是语法错误
        
  }   

json_last_error错误msg对照表:
0 = JSON_ERROR_NONE
1 = JSON_ERROR_DEPTH
2 = JSON_ERROR_STATE_MISMATCH
3 = JSON_ERROR_CTRL_CHAR
4 = JSON_ERROR_SYNTAX
5 = JSON_ERROR_UTF8
Ersetzen Sie die unzulässigen Zeichen durch ? und ändern Sie sie nach Bedarf.

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn das Parsen von PHP json_decode fehlschlägt?. 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