Maison > Questions et réponses > le corps du texte
Utilisez file_get_contents($url); pour renvoyer json. Il ne peut pas être analysé avec json_decode. Que dois-je faire ? J'ai également utilisé la méthode curl, mais cela ne fonctionne pas
.淡淡烟草味2017-05-16 13:00:39
Ce problème a été résolu par moi-même. Les données renvoyées par le tiers sont ascll, elles doivent donc être converties au format utf-8. Cela n'a rien à voir avec json_decode
.大家讲道理2017-05-16 13:00:39
Vous devez vérifier si le format est correct, ne téléchargez pas le code sur BB :
<?php
function treatJsonString($string)
{
$jsonData = json_decode($string, true);
switch (json_last_error()) {
case JSON_ERROR_NONE:
return $jsonData;
break;
case JSON_ERROR_DEPTH:
print '[Error] - Maximum stack depth exceeded' . PHP_EOL;
break;
case JSON_ERROR_STATE_MISMATCH:
print '[Error] - Underflow or the modes mismatch' . PHP_EOL;
break;
case JSON_ERROR_CTRL_CHAR:
print '[Error] - Unexpected control character found' . PHP_EOL;
break;
case JSON_ERROR_SYNTAX:
print '[Error] - Syntax error, malformed JSON' . PHP_EOL;
break;
case JSON_ERROR_UTF8:
print '[Error] - Malformed UTF-8 characters, possibly incorrectly encoded' . PHP_EOL;
break;
default:
print '[Error] - Unknown error' . PHP_EOL;
break;
}
return null;
}
$jsonString = '{"x":123,"s":[{"a":"1"}]';
var_dump(treatJsonString($jsonString));
滿天的星座2017-05-16 13:00:39
Vérifiez d'abord si votre json est au format json normal
Vérifiez ensuite si votre fichier php est en utf-8 sans BOM
J'ai déjà rencontré des problèmes similaires, et tout ira bien après avoir supprimé la BOM~
世界只因有你2017-05-16 13:00:39
json_decode($json, true)
Avec true, cela signifie qu'il sera analysé dans un tableau de php
为情所困2017-05-16 13:00:39
Tout d'abord, assurez-vous que votre Json est échappé d'une autre manière. Sinon, vous pouvez utiliser l'outil de vérification du format Json pour vérifier s'il y a un problème.
Outil de vérification du format Json en ligne
http://www.bejson.com/