stolt/json-lines

用于JSON Lines文本文件格式的库。

v4.0.1 2023-11-21 08:36 UTC

This package is auto-updated.

Last update: 2024-09-23 12:28:45 UTC


README

Test Version PHP Version

这是一个库,可以用于将数据结构转换为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以获取更多详细信息。