J'ai rencontré un problème avec php7 json_decode null !
Description spécifique du problème :
1. Confirmez que le fichier n'a pas d'en-tête de nomenclature
2 J'ai essayé les méthodes suivantes pour supprimer les chaînes illégales, mais NULL est toujours affiché
1 2 3 4 5 | $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 );
|
Copier après la connexion
3. json_last_error() génère 4, syntaxe. erreur, JSON mal formé
4. Affichez la chaîne directement et le navigateur peut analyser josn normalement, comme indiqué dans la capture d'écran ci-dessous

Solution :
Parce que votre chaîne n'est pas une chaîne JSON standard, une chaîne JSON standard Chaque type de chaîne doit être provoqué par "
Code de test
1 2 3 4 5 6 7 | <?php
$jsonStr1 = '{status: {RetCode:0, msg: "success" }, data: {}}';
var_dump(json_decode( $jsonStr1 , true));
var_dump(json_last_error());
echo "--------分割线--------" .PHP_EOL;
$jsonStr2 = '{ "status" : { "RetCode" :0, "msg" : "success" }, "data" : {}}';
var_dump(json_decode( $jsonStr2 , true));
|
Copier après la connexion
Résultat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | NULL
int(4)
--------分割线--------
array (2) {
[ "status" ]=>
array (2) {
[ "RetCode" ]=>
int(0)
[ "msg" ]=>
string(7) "success"
}
[ "data" ]=>
array (0) {
}
}
|
Copier après la connexion
============== Mise à jour============= =
Après le débogage, il a été constaté que cela était dû à la nomenclature. Voici la solution
1 2 3 4 5 6 7 8 | $dataString = $merchant_arr ['data'];
$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);
|
Copier après la connexion
Apprentissage recommandé : "Tutoriel PHP7"
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!