This is a library to enline to the JSON Lines format and to deline back from it to JSON.
$ composer require stolt/json-lines
To enline a data structure into JSON Lines use the enline
method.
$jsonLines = (new JsonLines())->enline([
["one" => 1, "two" => 2],
["three" => 3, "four" => 4, "five" => 5],
["six" => 6, "seven" => 7, "key" => "value"],
["nested" => ["a", "b", "c"]],
]);
var_dump($jsonLines);
Which will give you the following JSON Lines string.
string(107) "{"one":1,"two":2}
{"three":3,"four":4,"five":5}
{"six":6,"seven":7,"key":"value"}
{"nested":["a","b","c"]}
"
To enline a data structure into a JSON Lines file use the enlineToFile
method, adding the gz
extension will gzip compress the JSON Lines as shown next.
(new JsonLines())->enlineToFile([
["one" => 1, "two" => 2],
["three" => 3, "four" => 4, "five" => 5],
["six" => 6, "seven" => 7, "key" => "value"],
["nested" => ["a", "b", "c"]],
'out.jsonl.gz'
]);
To deline JSON Lines back into JSON use the deline
method.
$json = (new JsonLines())->deline('{"one":1,"two":2}
{"three":3,"four":4,"five":5}
{"six":6,"seven":7,"key":"value"}
{"nested":["a","b","c"]}'
);
var_dump($json)
Which will give you the following JSON string, which is only beautified here to illustrate the data structure.
string(287) "[
{
"one": 1,
"two": 2
},
{
"three": 3,
"four": 4,
"five": 5
},
{
"six": 6,
"seven": 7,
"key": "value"
},
{
"nested": [
"a",
"b",
"c"
]
}
]"
To deline a complete JSON Lines file back into JSON use the delineFromFile
method.
$json = (new JsonLines())->delineFromFile('/path/to/enlined.jsonl');
To deline a complete JSON Lines file line-by-line, use the delineEachLineFromFile
method.
$json_lines = (new JsonLines())->delineEachLineFromFile('/path/to/enlined.jsonl');
foreach($json_lines as $json_line) var_dump($json_line);
This allows large file to be iterated over without storing the entire delined file in memory.
$ composer test
This library is licensed under the MIT license. Please see LICENSE for more details.
Please see CHANGELOG for more details.
Please see CONTRIBUTING for more details.