json_encode en een csv file
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:
Als ik gewoon "echo $data;" doe werkt het wel, maar na json_encode() krijg ik een lege string. Wat doe ik fout?
Mijn test code is:
Quote:
$data = file_get_contents("test.csv");
echo json_encode($data);
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?
>> Als ik gewoon "echo $data;" doe werkt het wel
Wat krijg je dan te zien?
Wat krijg je dan te zien?
Ozzie PHP op 08/11/2016 16:03:40:
>> Als ik gewoon "echo $data;" doe werkt het wel
Wat krijg je dan te zien?
Wat krijg je dan te zien?
De inhoud van de csv file.
En wat krijg je zo te zien:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$data = file_get_contents("test.csv");
$data = json_encode($data);
var_dump($data);
?>
$data = file_get_contents("test.csv");
$data = json_encode($data);
var_dump($data);
?>
bool(false)
Dan is het encoden dus mislukt. Dat was ook de reden waarom ik vroeg wat (de inhoud) je erin stopt. Er lijkt dus iets met de inhoud niet oké te zijn.
Gewijzigd op 08/11/2016 16:26:51 door Ozzie PHP
Ok, maar wat kan er mis zijn met een csv file die ik vers uit een spreadsheet programma heb geëxporteerd? Zijn er verboden karakters?
Maar ik betwijfel hoe json_encode dit encode?
Als string in een JSON heb je er weinig aan.
Als string in een JSON heb je er weinig aan.
- Ariën - op 08/11/2016 16:37:29:
Maar ik betwijfel hoe json_encode dit encode?
Als string in een JSON heb je er weinig aan.
Als string in een JSON heb je er weinig aan.
Wat bedoel je precies? Ik zal het toch op één of andere manier moeten encoden...
Kun je niet een stukje van die string laten zien? Dat praat wat makkelijker.
Van CSV naar array naar json_encode.
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.
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:
Je zal dus eerst je csv om moeten zetten naar iets waar json_encode overweg kan.
Voorbeeldje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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);
?>
$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);
?>
Gewijzigd op 08/11/2016 19:36:37 door Ger van Steenderen




