Anmelden Registrieren

Einloggen

Username *
Password *

Neuen Account anlegen

Die mit einem Sternchen (*) gekennzeichneten Felder sind Pflichtfelder.
Name *
Username *
Password *
Verify password *
Email *
Verify email *
Captcha *
Joomla JSON Error Joomla JSON Error

Error decoding JSON data: Syntax error Featured

Nach dem ich mich nun entschieden habe, die Website als Blog weiterzuführen, habe ich K2für Joomla eingebunden und meine Beiträge in K2 importiert.

Das funktionierte soweit auch problemlos. Wenn ich jetzt aber in K2 einen Beitrag aufgerufen habe, habe ich einen JSON decosing error bekommen.

Im Netz habe ich nur Hinweise gefunden, das man ein JB Library Plugin deinstallieren soll; dies war aber nicht installiert.

Also habe ich mich ans debugging gemacht und mir die Registry.php angesehen und die Werte welche geparsd wurden einzelnen angesehen.

 

Hier ist mir aufgefallen das es einen String gab, welcher offentsichlich nur 59 Zeichen lang war, var_dump mir aber 133 Zeichen ausgegeben hat.

Das deutete daraufhin, das der String fehlerhaft ist und ich habe ihn "gecleant". Das Mittel zum Zweck war für mich "html_entity_decode". Diese PHP Funktion wandelte meinen String so um, das er problemlos durch die PHP Funktion "json_decode" in ein Objekt umgewandelt werden konnte.

Der WItz daran ist, das es nach einmaligem Aufrufen wieder entfernt werden konnte und danach immer noch funktionierte. Als Workaround ist es also durchaus zu verwenden.

HIer nun der Code in folgender Datei: \libraries\vendor\joomla\registry\src\Format\Json.php

In Zeile 67 habe ich nun die Funktion innerhalb der json_decode eingebaut:

public function stringToObject($data, array $options = array('processSections' => false))

{

$data = trim($data);

 

if ((substr($data, 0, 1) != '{') && (substr($data, -1, 1) != '}'))

{

return AbstractRegistryFormat::getInstance('Ini')->stringToObject($data, $options);

}

 

$decoded = json_decode(html_entity_decode($data, ENT_QUOTES));

 

// Check for an error decoding the data

if ($decoded === null)

{

throw new \RuntimeException(sprintf('Error decoding JSON data: %s', json_last_error_msg()));

}

 

return $decoded;

 

}

 

Last modified on Sonntag, 08 Januar 2017 17:59