Sto provando questo codiceCome risolvere l'errore JSON_ERROR_UTF8 in php json_decode?
$json = file_get_contents("http://www.google.com/alerts/preview?q=test&t=7&f=1&l=0&e");
print_r(json_decode(utf8_encode($json), true));
//////////////
// Define the errors.
$constants = get_defined_constants(true);
$json_errors = array();
foreach ($constants["json"] as $name => $value) {
if (!strncmp($name, "JSON_ERROR_", 11)) {
$json_errors[$value] = $name;
}
}
// Show the errors for different depths.
foreach (range(4, 3, -1) as $depth) {
var_dump(json_decode($json, true, $depth));
echo 'Last error: ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL;
}
Ho provato un sacco di funzioni, html_entities_decode, utf8_encode e decodifica, decodifica i codici esadecimali, ma ottengo sempre l'errore "JSON_ERROR_UTF8".
Come posso risolvere questo?
io non sono sicuro perché l'errore è venuta fuori come un errore UTF8 . Il JSON restituito da quell'URL non è valido poiché utilizza le virgolette singole dove dovrebbe essere usato il doppio. Non passa JSON LINT (http://jsonlint.com/). Detto questo, presumo che '$ x' sulla riga 2 del tuo codice dovrebbe essere' $ json'? – JAAulde
Sì, stavo pulendo il codice e ho dimenticato di cambiare $ x, hai provato a renderlo valido e poi a decodificarlo? Non saprei come renderlo valido. –
Ho provato a sostituire tutte le virgolette singole con il doppio, ma poi ad incontrare altri problemi di convalida. Ancora dando un'occhiata. – JAAulde