(siehe http://php.net/manual/en/function.json-last-error.php)
Sie sollten (Echo) prüfen, was man bekommt von
$str = file_get_contents('http://localhost/data.json');
(Sie können Ihre Antwort bearbeiten und veröffentlichen - oder ein Teil davon)
Sicher ist es nicht gültig JSON
; das Problem liegt dort: in data.json
.
Dann, wie Sie Dinge reparieren und von data.json
bekommen, was erwartet wird, würde ich sicherstellen, dass Sie wirklich html_entity_decode
auf den abgerufenen Daten verwenden müssen.
Es wäre "weird" html codierte JSON-Daten zu haben.
UPDATE
Mit Blick auf, was Sie von data.json
scheinen, um es die JSON-Daten enthält HTML-Entitäten tatsächlich (wie ich die Anwesenheit von
s sehen)
Das eigentlich seltsam ist, die Das Richtige zu tun wäre zu beheben, wie data.json
generiert wird gewährleistet nicht-HTML-codiert JSON Daten zurückgegeben wird, ist Zeichensatz UTF-8 und die Antwort Inhaltstyp ist Content-Type: application/json
.
Wir können das hier nicht vertiefen, da ich nicht weiß woher kommt data.json
oder von dem Code, der es erzeugt. Schließlich können Sie eine andere Antwort veröffentlichen.
Also hier ist eine schnelle Lösung vorausgesetzt, dass der richtige Ansatz wäre, was ich gerade oben vorgeschlagen habe.
Wie Sie HTML-Entitäten, nicht Bruch Räume
verwandelt sich in 2-Byte-UTF-8-Zeichen (Byte-Wert 196, 160), die nicht gültig für JSON kodierten Daten zu dekodieren.
Die Idee ist, diese Zeichen zu entfernen; Ihr Code wird:
$str = file_get_contents('http://localhost/data.json');
$decodedstr = html_entity_decode($str);
// the character sequence for decoded HTML
$nbsp = html_entity_decode(" ");
// remove every occurrence of the character sequence
$decodedstr = str_replace($nbsp, "", $decodedstr);
$jarray = json_decode($decodedstr, true);
Haben Sie es ohne den 'html_entity_decode' Schritt versucht und nur' json_decode ($ str, true) '? – rickdenhaan
print die 'json_last_error()' nach 'json_decode' Methode –
oke ich versuchte, ohne die html_entity_decode und es gab immer noch null zurück. wenn ich den json_last_error drucke, bekomme ich 4 – FutureCake