The most basic CSV to JSON and JSON to CSV converter library in PHP without any dependencies.
Via Composer
$ composer require ozdemirburak/json-csvuse OzdemirBurak\JsonCsv\File\Json;
// JSON to CSV
$json = new Json(__DIR__ . '/above.json');
// To convert JSON to CSV string
$csvString = $json->convert();
// To set a conversion option then convert JSON to CSV and save
$json->setConversionKey('utf8_encoding', true);
$json->convertAndSave(__DIR__ . '/above.csv');
// To convert JSON to CSV and force download on browser
$json->convertAndDownload();You can also convert directly from a JSON string using the fromString method.
$csvString = (new Json())->fromString('{"name": "Buddha", "age": 80}')->convert();Assume that the input JSON is something like below.
[
  {
    "name": {
      "common": "Turkey",
      "official": "Republic of Turkey",
      "native": "T\u00fcrkiye"
    },
    "area": 783562,
    "latlng": [39, 35]
  },
  {
    "name": {
      "common": "Israel",
      "official": "State of Israel",
      "native": "\u05d9\u05e9\u05e8\u05d0\u05dc"
    },
    "area": 20770,
    "latlng": [31.30, 34.45]
  }
]After the conversion, the resulting CSV data will look like below.
| name_common | name_official | name_native | area | latlng_0 | latlng_1 | 
|---|---|---|---|---|---|
| Turkey | Republic of Turkey | Türkiye | 783562 | 39 | 35 | 
| Israel | State of Israel | ישראל | 20770 | 31.3 | 34.45 | 
use OzdemirBurak\JsonCsv\File\Csv;
// CSV to JSON
$csv = new Csv(__DIR__ . '/below.csv');
$csv->setConversionKey('options', JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
// To convert CSV to JSON string
$jsonString = $csv->convert();
// To convert CSV to JSON and save
$csv->convertAndSave(__DIR__ . '/below.json');
// To convert CSV to JSON and force download on browser
$csv->convertAndDownload();You can also convert directly from a CSV string using the fromString method.
$jsonString = (new Csv())->fromString('[{"name":"Buddha","age":"80"}]')->convert();Assume that the input CSV file is something like below.
| SepalLength | SepalWidth | PetalLength | PetalWidth | Name | 
|---|---|---|---|---|
| 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa | 
| 7.0 | 3.2 | 4.7 | 1.4 | Iris-versicolor | 
| 6.3 | 3.3 | 6.0 | 2.5 | Iris-virginica | 
After the conversion, the resulting JSON data will look like below.
[
  {
    "SepalLength": "5.1",
    "SepalWidth": "3.5",
    "PetalLength": "1.4",
    "PetalWidth": "0.2",
    "Name": "Iris-setosa"
  },
  {
    "SepalLength": "7.0",
    "SepalWidth": "3.2",
    "PetalLength": "4.7",
    "PetalWidth": "1.4",
    "Name": "Iris-versicolor"
  },
  {
    "SepalLength": "6.3",
    "SepalWidth": "3.3",
    "PetalLength": "6.0",
    "PetalWidth": "2.5",
    "Name": "Iris-virginica"
  }
]Please see CHANGELOG for more information what has changed recently.
$ composer testCurrently, there are not any issues that are known.
Please see CONTRIBUTING for details.
The MIT License (MIT). Please see License File for more information.