keboola-legacy / json-parser
3.0.0
2021-01-15 15:41 UTC
Requires
- php: >=7.4
- keboola/php-csvtable: ^1.1
- keboola/php-utils: ^4.1
- monolog/monolog: ^2.2
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- phpunit/phpunit: ^5.2
- squizlabs/php_codesniffer: ^2.5
- dev-master
- 3.0.0
- 2.1.0
- 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
- dev-webrouse-COM-596-update-packages
- dev-column-conflicts
This package is auto-updated.
Last update: 2022-05-31 05:50:18 UTC
README
描述
解析JSON字符串到CSV文件。如果JSON包含编号数组,则从单个JSON创建多个表格。使用Keboola\CsvFile进行结果处理
使用方法
use Keboola\Json\Parser; $parser = Parser::create(new \Monolog\Logger('json-parser')); $file = file_get_contents("some/data.json"); $json = json_decode($file); $parser->process($json); $results = $parser->getCsvFiles(); // array of CsvFile objects
解析器\Json
分析并解析JSON数据到n*CSV文件。
create(\Monolog\Logger $logger, $struct, $analyzeRows)
- $struct应该包含一个数组,其中包含来自之前analyze()调用的结果(由process()自动调用)
- $analyzeRows确定要分析的数据行数(仅计算每个JSON的"根"级别)[默认-1为无限]
process($data, $type, $parentId)
- 期望将结果数组作为$data参数
- $type用于命名结果表
- $parentId可以是字符串,它将被保存在JSON_parentId列中,或是一个包含"column_name" => "value"的数组,它将使用数组键命名列
- 检查数据是否需要分析,并分析或解析到$this->tables[$type]中($type根据SAPI命名要求进行优化)
- 如果数据已分析,则存储在缓存中,并且**不解析**,直到调用$this->getCsvFiles()为止
getCsvFiles()
- 返回包含解析结果的\Common\Table对象列表
解析特性
analyze函数遍历数组的每一行(通常是一个结果数组),并将行传递到analyzeRow()方法。如果行仅包含字符串,则将其存储在"data"列中,否则行通常应该是对象,因此对象的所有变量将用作列名,并对其值进行分析
- 如果是标量,它将保存为该列的值。
- 如果是另一个对象,它将递归地解析到analyzeRow()中,其变量名将添加到当前对象的名称前
- 例如:"parent": {"child" : "value1"} 将结果为一个 "parent_child" 列,其字符串类型为 "value1"
- 如果是数组,它将被传递到analyze()以创建一个新表,通过JSON_parentId链接