ruifernandees/csv-json-converter

A modern PHP CSV to JSON and JSON to CSV converter

v0.0.2 2020-12-23 16:06 UTC

This package is auto-updated.

Last update: 2024-09-24 00:17:53 UTC


README

You can see the README in:

📄 Description

CSV/JSON Converter is a modern PHP component which abstracts the CSV to JSON and JSON to CSV conversion routine.

Install

Using Composer

$ composer require ruifernandees/csv-json-converter

💻 Usage

CSV -> JSON

This example is in examples/csvToJson.php

Code:

<?php

require __DIR__ . '/../vendor/autoload.php';

use RuiF\CsvToJson\FileFacade;

$filePath = __DIR__ . "/users.csv";

if (file_exists($filePath)) {
    $fileFacade = new FileFacade();

    /**
     * Is the line on the CSV file that the keys are (Like name, age, and city)
     */
    $lineOfCsvKeysOnTheFile = 1;

    /**
     * -1 if you want to get all lines of the CSV file (after the keys). 
     * If you want to limit, you can pass any number greater than zero
     * (See the examples below)
     */
    $limitOfLines = 1;

    /**
     * Is the start position after the keys that 
     * you want to consider when converting: 0 is the first position
     * (See the examples below)
     */
    $offset = 0;

    $json = $fileFacade->convertCsvToJson($filePath, $lineOfCsvKeysOnTheFile, $limitOfLines, $offset);
    
    echo $json;
} else {
    echo "The file doesn't exists";
}

Input file (users.csv):

name,age,city
Rui,18,Maceió
José,25,São Paulo

Output (with limit 1 and offset 0):

[
    {
        "name": "Rui",
        "age": "18",
        "city": "Maceió"
    }
]

Output (with limit 1 and offset 1):

[
    {
        "name": "José",
        "age": "25",
        "city": "São Paulo"
    }
]

Output (with default limit and offset, getting all elements of the CSV file):

[
    {
        "name": "Rui",
        "age": "18",
        "city": "Maceió"
    },
    {
        "name": "José",
        "age": "25",
        "city": "São Paulo"
    }
]

You can save the JSON file with the following code:

$jsonFile = __DIR__ . "/users.json";

$fileOpen = fopen($jsonFile, "w");
fwrite($fileOpen, $json);

JSON -> CSV

This example is in examples/jsonToCsv.php

Code:

<?php

require __DIR__ . '/../vendor/autoload.php';

use RuiF\CsvToJson\FileFacade;

$filePath =  __DIR__ . '/users.json';

if (file_exists($filePath)) {
    $fileFacade = new FileFacade();
    $csv = $fileFacade->convertJsonToCsv($filePath);
    
    echo "Result:\n{$csv}";
} else {
    echo "The file doesn't exists";
}

Input file (users.json):

[
    {
        "name": "Rui",
        "age": "18",
        "city": "Maceió"
    },
    {
        "name": "José",
        "age": "25",
        "city": "São Paulo"
    }
]

Output:

name,age,city
Rui,18,Maceió
José,25,São Paulo

You can save the CSV file with the following code:

$csvFile = __DIR__ . "/users.csv";

$fileOpen = fopen($csvFile, "w");
fwrite($fileOpen, $csv);

Run the tests

$ composer test

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information