json_encode en een csv file
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?
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.
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)
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?
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.
Waarschijnlijk heb ik file in de verkeerde encoding geproduceerd. Ik kom er nu wel uit. Bedankt voor het meedenken.
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