stolt / json-lines
用于JSON Lines文本文件格式的库。
v4.0.1
2023-11-21 08:36 UTC
Requires
- php: >=8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpunit/phpunit: 8.*
- stolt/lean-package-validator: ^3.0
Suggests
- ext-zlib: Allow gzip compression of JSON Lines when writing to a file
README
这是一个库,可以用于将数据结构转换为JSON Lines格式,并从JSON Lines格式中提取数据。
通过Composer安装
composer require stolt/json-lines
用法
要将数据结构转换为JSON Lines,使用enline
方法。
$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);
这将给出以下JSON Lines字符串。
string(107) "{"one":1,"two":2}
{"three":3,"four":4,"five":5}
{"six":6,"seven":7,"key":"value"}
{"nested":["a","b","c"]}
"
要将数据结构写入JSON Lines文件,使用enlineToFile
方法,添加gz
扩展名将压缩JSON Lines,如下所示。
(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' ]);
要将JSON Lines转换为JSON,使用deline
方法。
$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)
这将给出以下JSON字符串,此处仅进行美化以展示数据结构。
string(287) "[
{
"one": 1,
"two": 2
},
{
"three": 3,
"four": 4,
"five": 5
},
{
"six": 6,
"seven": 7,
"key": "value"
},
{
"nested": [
"a",
"b",
"c"
]
}
]"
要将完整的JSON Lines文件转换回JSON,使用delineFromFile
方法。
$json = (new JsonLines())->delineFromFile('/path/to/enlined.jsonl');
要逐行转换完整的JSON Lines文件,使用delineEachLineFromFile
方法。这允许在迭代大文件时,不需要在内存中存储整个转换后的文件。
$json_lines = (new JsonLines())->delineEachLineFromFile('/path/to/enlined.jsonl'); foreach ($json_lines as $json_line) { var_dump($json_line); }
运行测试
composer test
许可证
本库采用MIT许可证。请参阅LICENSE以获取更多详细信息。
变更日志
请参阅CHANGELOG以获取更多详细信息。
贡献
请参阅CONTRIBUTING以获取更多详细信息。