62 个版本
0.19.18 | 2024 年 7 月 6 日 |
---|---|
0.19.14 | 2024 年 5 月 9 日 |
0.19.13 | 2024 年 3 月 20 日 |
0.19.10 | 2023 年 12 月 2 日 |
0.7.0 | 2021 年 11 月 30 日 |
#1169 在 解析器实现
222 每月下载量
用于 flatterer-web
5.5MB
5K SLoC
libflatterer. 创建 JSON 简化器
简介
一个有偏见的 JSON 到 CSV/XLSX/SQLITE/PARQUET 转换器,旨在为数据分析创建有用的关系型输出。
Flatterer 文档,由该库构建的 Python CLI/library。查看这些文档以获取 Flatterer 的高级信息。
lib.rs
:
libflatterer - 创建 JSON 简化器的库。
主要用于 Flatterer,这是一个使用此库绑定构建的 Python library/cli。阅读 Flatterer 文档 以了解简化器的工作原理的高级概述。尽管如此,也可以作为一个独立的 Rust 库使用。
高级使用,使用 flatten 函数,提供 BufReader、输出目录和 Options 结构体(使用构建器模式生成)
use tempfile::TempDir;
use std::fs::File;
use libflatterer::{flatten, Options};
use std::io::BufReader;
let tmp_dir = TempDir::new().unwrap();
let output_dir = tmp_dir.path().join("output");
let options = Options::builder().xlsx(true).sqlite(true).parquet(true).table_prefix("prefix_".into()).build();
flatten(
BufReader::new(File::open("fixtures/basic.json").unwrap()), // reader
output_dir.to_string_lossy().into(), // output directory
options, // options
).unwrap();
低级使用,直接使用 FlatFiles
结构体并提供选项。
use tempfile::TempDir;
use std::fs::File;
use libflatterer::{FlatFiles, Options};
use std::io::BufReader;
use serde_json::json;
let myjson = json!({
"a": "a",
"c": ["a", "b", "c"],
"d": {"da": "da", "db": "2005-01-01"},
"e": [{"ea": "ee", "eb": "eb2"},
{"ea": "ff", "eb": "eb2"}],
});
let tmp_dir = TempDir::new().unwrap();
let output_dir = tmp_dir.path().join("output");
let options = Options::builder().xlsx(true).sqlite(true).parquet(true).table_prefix("prefix_".into()).build();
// Create FlatFiles struct
let mut flat_files = FlatFiles::new(
output_dir.to_string_lossy().into(), // output directory
options
).unwrap();
// process JSON to memory
flat_files.process_value(myjson.clone(), vec![]);
// write processed JSON to disk. Do not need to do this for every processed value, but it is recommended.
flat_files.create_rows();
// copy the above two lines for each JSON object e.g..
flat_files.process_value(myjson.clone(), vec![]);
flat_files.create_rows();
// ouput the selected formats
flat_files.write_files();
依赖项
~17–40MB
~629K SLoC