json_encode en een csv file

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim Roffel

Wim Roffel

08/11/2016 15:58:47
Quote Anchor link
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:
Quote:
$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?
 
PHP hulp

PHP hulp

24/12/2024 03:18:05
 
Ozzie PHP

Ozzie PHP

08/11/2016 16:03:40
Quote Anchor link
>> Als ik gewoon "echo $data;" doe werkt het wel

Wat krijg je dan te zien?
 
Wim Roffel

Wim Roffel

08/11/2016 16:08:36
Quote Anchor link
Ozzie PHP op 08/11/2016 16:03:40:
>> Als ik gewoon "echo $data;" doe werkt het wel

Wat krijg je dan te zien?



De inhoud van de csv file.
 
Ozzie PHP

Ozzie PHP

08/11/2016 16:13:22
Quote Anchor link
En wat krijg je zo te zien:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$data
= file_get_contents("test.csv");
$data = json_encode($data);
var_dump($data);
?>
 
Wim Roffel

Wim Roffel

08/11/2016 16:19:31
Quote Anchor link
bool(false)
 
Ozzie PHP

Ozzie PHP

08/11/2016 16:21:53
Quote Anchor link
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
 
Wim Roffel

Wim Roffel

08/11/2016 16:29:53
Quote Anchor link
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?
 
- Ariën  -
Beheerder

- Ariën -

08/11/2016 16:37:29
Quote Anchor link
Maar ik betwijfel hoe json_encode dit encode?
Als string in een JSON heb je er weinig aan.
 
Wim Roffel

Wim Roffel

08/11/2016 16:40:48
Quote Anchor link
- 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.


Wat bedoel je precies? Ik zal het toch op één of andere manier moeten encoden...
 
Ozzie PHP

Ozzie PHP

08/11/2016 16:43:45
Quote Anchor link
Kun je niet een stukje van die string laten zien? Dat praat wat makkelijker.
 
- Ariën  -
Beheerder

- Ariën -

08/11/2016 16:49:06
Quote Anchor link
Van CSV naar array naar json_encode.
 
Wim Roffel

Wim Roffel

08/11/2016 17:54:16
Quote Anchor link
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

08/11/2016 19:32:16
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
    
?>
Gewijzigd op 08/11/2016 19:36:37 door Ger van Steenderen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.