Maison  >  Article  >  interface Web  >  Que signifie l’erreur de format json ?

Que signifie l’erreur de format json ?

(*-*)浩
(*-*)浩original
2019-06-01 13:53:2713425parcourir

Erreur de format

Que signifie l’erreur de format json ?

Puisque json n'accepte que les caractères codés en utf-8, les paramètres de json_encode() doivent être utf-8 encodage, sinon vous obtiendrez un caractère nul ou null. Lorsque le chinois utilise le codage GB2312 ou que les langues étrangères utilisent le codage ISO-8859-1, une attention particulière doit être portée à ce point.

$bad_json = "{ 'bar': 'baz' }";
$bad_json = '{ bar: "baz" }';
$bad_json = '{ "bar": "baz", }';

L'exécution de json_decode() sur ces trois chaînes renverra null et signalera une erreur.

La première erreur est que le délimiteur json autorise uniquement l'utilisation de guillemets doubles, pas de guillemets simples. La deuxième erreur est que le "nom" (la partie à gauche des deux points) de la paire nom-valeur json doit dans tous les cas utiliser des guillemets doubles. La troisième erreur est que vous ne pouvez pas ajouter une virgule après la dernière valeur.

De plus, json ne peut être utilisé que pour représenter des objets et des tableaux. Si json_decode() est utilisé sur une chaîne ou une valeur, null sera renvoyé.

Le format est correct, mais une erreur est signalée

Le premier type, problème d'encodage des caractères

Puisque json n'accepte que les caractères codés en utf-8 , donc Les paramètres de json_encode() doivent être codés en utf-8, sinon vous obtiendrez des caractères nuls ou nuls. Lorsque le chinois utilise le codage GB2312 ou que les langues étrangères utilisent le codage ISO-8859-1, une attention particulière doit être portée à ce point.

Le deuxième type de problème de nomenclature

L'en-tête de nomenclature est également appelé signature UTF-8. En fait, la nomenclature UTF-8 n'a aucun effet sur UFT-8. -16 et UTF-32 La nomenclature vient d'être ajoutée, la signature de la nomenclature signifie indiquer à l'éditeur quel encodage le fichier actuel utilise pour faciliter l'identification de l'éditeur. Cependant, bien que la nomenclature ne soit pas affichée dans l'éditeur, elle générera simplement une sortie. comme une ligne vierge supplémentaire. Généralement, si le code PHP est édité et enregistré avec un logiciel tel que le Bloc-notes, lors de l'enregistrement d'un fichier codé en UTF-8, trois caractères invisibles (0xEF 0xBB 0xBF ou BOM) seront insérés au début de. le fichier. Il s'agit d'une chaîne de caractères masqués utilisée pour permettre aux éditeurs tels que le Bloc-notes d'identifier si le fichier est codé en UTF-8. (On ne sait pas pourquoi l'en-tête de nomenclature est automatiquement ajouté lors du renvoi des données).

/**
 * 去除bom报头
 */
public static String formatString(String s) {
if (s != null) {
  s = s.replaceAll("\ufeff", "");
}
 return s;
}

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!

Déclaration:
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