Na json_encode incorrecte json code?
Ik kom er niet meer uit, wellicht zien jullie waar het probleem zit?
Ik heb een array en die haal ik door json_encode, sla hem op in de database en haal deze later weer op. Vervolgens doe ik json_decode maar krijg ik errorcode 4, wat wilt zeggen dat mijn json string incorrect is.
Als ik de string echo klopt hij echter wel.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$aTempLessen = array ( 'Dynamisch en lang.' );
$sTempLessen = json_encode ( $aTempLessen );
mysql_query ( "INSERT INTO klassen ( datagrid ) VALUES ( '" . $sTempLessen . "' )" ); // Staat nu netjes in DB!
// Andere pagina:
$query = mysql_query ( "SELECT datagrid FROM klassen" );
$fetch = mysql_fetch_assoc ( $query );
echo $fetch['datagrid'];
print_r ( json_decode ( $fetch['datagrid'], true ) );
?>
$aTempLessen = array ( 'Dynamisch en lang.' );
$sTempLessen = json_encode ( $aTempLessen );
mysql_query ( "INSERT INTO klassen ( datagrid ) VALUES ( '" . $sTempLessen . "' )" ); // Staat nu netjes in DB!
// Andere pagina:
$query = mysql_query ( "SELECT datagrid FROM klassen" );
$fetch = mysql_fetch_assoc ( $query );
echo $fetch['datagrid'];
print_r ( json_decode ( $fetch['datagrid'], true ) );
?>
De echo:
{"1":{"4":{"rowspan":8,"classroom":"B2.01
","teacher":"SCHY","classname":"SIM"}}}
Print_r: Niks.
var_dump: NULL
json_last_error: JSON_ERROR_SYNTAX
Alvast bedankt voor de hulp!
Update:
Als ik de json string decode via phpfiddle gaat alles goed?...
Zit er misschien een limiet op json_decode?
Update 2:
Gevonden! Er stond nog een \r achter elk lokaal.. (Zie json hierboven), zucht...
Heb de json string ingekort :)
Gewijzigd op 29/11/2014 19:35:41 door Henk van Loo
Overigens had je het kunnen voorkomen door je input te escapen.
Gewijzigd op 29/11/2014 20:44:30 door Ger van Steenderen
Bedankt voor je antwoord.
Ik heb 1 MySQL database tot mijn beschikking bij mijn webhosting, dus MongoDB zal geen optie zijn.
De reden waarom ik alles in de DB doe opslaan is omdat de lesdata extern geladen wordt via curl. Om dataverkeer te besparen wordt er om de 30 minuten gekeken of het rooster aangepast is, zo ja dan wordt dit gedownload en opgeslagen. Er gaan naar verwachting een kleine 10.000 leerlingen en leraren van deze service gebruik maken, om nu tijdens het genereren van de pagina de data extern op te halen en te verwerken leek mij overkill.
Als je een betere manier vind om de data op te slaan zonder andere software dan hoor ik dit graag.
Gewijzigd op 29/11/2014 21:18:13 door Henk van Loo
Kijk eens naar serialize en unserialize