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解析器实现

Download history 2/week @ 2024-04-08 159/week @ 2024-05-06 14/week @ 2024-05-13 21/week @ 2024-05-20 5/week @ 2024-05-27 6/week @ 2024-06-03 7/week @ 2024-06-10 514/week @ 2024-06-17 24/week @ 2024-06-24 193/week @ 2024-07-01 26/week @ 2024-07-08 3/week @ 2024-07-15

222 每月下载量
用于 flatterer-web

MIT 许可证

5.5MB
5K SLoC

libflatterer. 创建 JSON 简化器

简介

一个有偏见的 JSON 到 CSV/XLSX/SQLITE/PARQUET 转换器,旨在为数据分析创建有用的关系型输出。

Flatterer 文档,由该库构建的 Python CLI/library。查看这些文档以获取 Flatterer 的高级信息。

Docs.rs 文档


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