keboola / json-parser
Keboola JSON to CSV 解析器
4.0.0
2024-07-30 12:06 UTC
Requires
- php: ^8.1
- ext-json: *
- keboola/php-csvtable: ~2.1.0
- keboola/php-temp: ^2.0
- keboola/php-utils: ^4.1
- monolog/monolog: ^2.2
Requires (Dev)
- keboola/coding-standard: >=9.0
- php-parallel-lint/php-parallel-lint: ^1.2
- phpstan/phpstan: ^1.0
- phpunit/phpunit: ^9.0
- dev-master
- 4.0.0
- 3.0.0
- 2.1.0
- 2.0.1
- 2.0.0
- 1.1.0
- 1.0.13
- 1.0.12
- 1.0.11
- 1.0.10
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.24
- 0.1.23
- 0.1.22
- 0.1.21
- 0.1.20
- 0.1.19
- 0.1.18
- 0.1.17
- 0.1.16
- 0.1.15
- 0.1.14
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-ujovlado-license-and-readme
This package is auto-updated.
Last update: 2024-08-30 12:21:40 UTC
README
描述
将 JSON 字符串解析成 CSV 文件。从一个 JSON 文件中创建多个表格。使用 Keboola\CsvFile 存储结果。JSON 的根必须是数组。JSON 解析器是 Generic Extractor 的一部分(也请参阅终端用户 文档)。
用法
use Keboola\Json\Parser; $parser = new Parser(new Analyzer(new NullLogger(), new Structure())); $file = file_get_contents("some/data.json"); $json = json_decode($file); $parser->process($json); $results = $parser->getCsvFiles(); // array of CsvFile objects
\Keboola\Json\Analyzer
为 JSON 解析器分析 JSON 数据。
__construct(\Psr\Log\LoggerInterface $logger, \Keboola\Json\Structure $structure, $nestedArraysAsJson, $strict)
- $logger - 一个记录器,如果没有使用记录器,则使用
NullLogger
。 - $structure - JSON 结构的表示。
- $nestedArraysAsJson - 如果为 true,则嵌套数组将被编码为 JSON 字符串。如果为 false(默认),转换将失败。
- $strict - 如果为 true,则将更严格地检查 JSON 节点数据类型(int、string 等)。
\Keboola\Json\Parser
将 JSON 数据解析成 CSV 文件。
__construct($analyzer, $definitions = [])
- $definitions - 可选的数组,包含先前过程的结果。
- $analyzer - 分析器类的实例。
process($data, $type, $parentId)
- $data - 从 JSON 数据中检索的对象数组。
- $type - 用于命名结果表。
- $parentId - 可以是一个字符串,它将被保存在 JSON_parentId 列中,或者是一个包含 "column_name" => "value" 的数组,它将使用提供的数组键命名列。
- 如果数据已分析,它将存储在缓存中,并且**不会解析**,直到调用
getCsvFiles()
方法。
getCsvFiles()
- 返回一个包含解析结果的 \Keboola\CsvTable\Table 对象列表
解析特性
分析函数遍历数组的每一行(通常是一个结果数组),并将行传递给 analyzeRow()
方法。如果行只包含一个标量,它将被存储在一个 "data" 列中。如果行是一个对象,对象的每个变量将用作列名,其值将被分析
- 如果是标量,它将被保存为该列的值。
- 如果是数组,它将被传递给
analyze()
以创建一个新的表,通过生成的JSON_parentId
列链接 - 如果是另一个对象,它将被递归地解析为
analyzeRow()
,其变量名称将添加到当前对象的名称前,例如
"parent": {
"child" : "value1"
}
将导致一个 parent_child
列,其字符串类型为 "value1"。