Maison > développement back-end > PHP7 > J'ai rencontré un problème avec php7 json_decode null !

J'ai rencontré un problème avec php7 json_decode null !

藏色散人
Libérer: 2023-02-18 09:16:02
avant
2736 Les gens l'ont consulté

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

Jai rencontré un problème avec php7 json_decode null !

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 = &#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));

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[&#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);

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!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal