Heim  >  Artikel  >  Backend-Entwicklung  >  Es ist ein Problem mit php7 json_decode null aufgetreten!

Es ist ein Problem mit php7 json_decode null aufgetreten!

藏色散人
藏色散人nach vorne
2021-12-03 17:22:082422Durchsuche

Es ist ein Problem mit php7 json_decode null aufgetreten!

Spezifische Problembeschreibung:

1. Bestätigen Sie, dass die Datei keinen BOM-Header hat

2. Habe die folgenden Methoden ausprobiert, um ungültige Zeichenfolgen zu entfernen, aber es wird immer noch NULL ausgegeben

        $some_string = htmlspecialchars_decode($some_string);
        $some_string = preg_replace("/\t/", " ", $some_string);
        $some_string = preg_replace("/\n/", ' ', $some_string);
        $some_string = str_replace("\n", ' ', $some_string);
        $some_string = str_replace ('\n','', $some_string);

3 Fehler, fehlerhaftes JSON

4. Geben Sie die Zeichenfolge direkt aus, und der Browser kann josn normal analysieren, wie im Screenshot unten gezeigt

Es ist ein Problem mit php7 json_decode null aufgetreten!

Lösung:

Da Ihre Zeichenfolge keine Standard-JSON-Zeichenfolge ist, a Standard-JSON-Zeichenfolge Jeder Zeichenfolgentyp muss durch „

Testcode

<?php 
$jsonStr1 = &#39;{status: {RetCode:0, msg: "success"}, data: {}}&#39;;
var_dump(json_decode($jsonStr1, true));
var_dump(json_last_error());
echo "--------分割线--------".PHP_EOL;
$jsonStr2 = &#39;{"status": {"RetCode":0, "msg": "success"}, "data": {}}&#39;;
var_dump(json_decode($jsonStr2, true));

Ergebnis

NULL
int(4)
--------分割线--------
array(2) {
  ["status"]=>
  array(2) {
    ["RetCode"]=>
    int(0)
    ["msg"]=>
    string(7) "success"
  }
  ["data"]=>
  array(0) {
  }
}

============== Update============= verursacht werden =

Nach dem Debuggen wurde festgestellt, dass es durch BOM verursacht wurde. Hier ist die Lösung

$dataString = $merchant_arr[&#39;data&#39;];
$A = substr($dataString, 0, 1);
$B = substr($dataString, 1, 1);
$C = substr($dataString, 2, 1);
if ((ord($A) == 239) && (ord($B) == 187) && (ord($C) == 191)) {
    $dataString = substr($dataString, 3);
}
$dataArray = json_decode($dataString, true);

Empfohlenes Lernen: „PHP7-Tutorial

Das obige ist der detaillierte Inhalt vonEs ist ein Problem mit php7 json_decode null aufgetreten!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen