Ik heb een csv file die ik in wil lezen en dan aan javascript wil doorgeven. Ergens gaat dat fout want ik krijg uiteindelijk een lege string.

Mijn test code is:
$data = file_get_contents("test.csv");
echo json_encode($data);


Als ik gewoon "echo $data;" doe werkt het wel, maar na json_encode() krijg ik een lege string. Wat doe ik fout?
Ik ontdekte net de functies json_last_error() en json_last_error_msg(). De laatste geeft "Malformed UTF-8 characters, possibly incorrectly encoded".

Waarschijnlijk heb ik file in de verkeerde encoding geproduceerd. Ik kom er nu wel uit. Bedankt voor het meedenken.
Nee, file_get_contents geeft de inhoud van een bestand, en geen array (of object)
Je zal dus eerst je csv om moeten zetten naar iets waar json_encode overweg kan.
Voorbeeldje:

<?php
	$fh = fopen('test.csv', FOPEN_READ);
	$fields = ['value1', 'value2', 'value3'];
	// of als de eerste regel veldnamen bevat
	// $fields = fgetcsv($fh)
	$idx = 0;
	$ajson = [];
	while($csv = fgetcsv($fh))
	{
		$ajson[$idx]= [];
		foreach ($fields as $key => $value)
		{
			$ajson[$idx][$value] = $csv[$key];
		}
		$idx++;
	}
	echo '<pre>', json_encode($ajson, JSON_PRETTY_PRINT);
	
?>

Reageren