25次重大版本更新

52.2.0 2024年7月28日
52.0.0 2024年6月6日
51.0.0 2024年3月18日
50.0.0 2024年1月12日
27.0.0 2022年11月14日

236解析器实现 中排名

Download history 138036/week @ 2024-04-24 119867/week @ 2024-05-01 138839/week @ 2024-05-08 131392/week @ 2024-05-15 137479/week @ 2024-05-22 174906/week @ 2024-05-29 230948/week @ 2024-06-05 229931/week @ 2024-06-12 222097/week @ 2024-06-19 275600/week @ 2024-06-26 217623/week @ 2024-07-03 234702/week @ 2024-07-10 231537/week @ 2024-07-17 246159/week @ 2024-07-24 250306/week @ 2024-07-31 245636/week @ 2024-08-07

每月下载量 1,026,797
32 crate 中使用 (直接使用 9)

Apache-2.0

2.5MB
55K SLoC

在Arrow内存格式和JSON行分隔记录之间传输数据。

请参阅模块级别的文档,以获取readerwriter的使用示例。

二进制数据

根据RFC7159,JSON无法编码任意二进制数据。一种常见的解决方案是使用二进制到文本编码方案,如base64,来编码输入数据,然后在输出时解码它。

#
// The data we want to write
let input = BinaryArray::from(vec![b"\xDE\x00\xFF".as_ref()]);

// Base64 encode it to a string
let encoded: StringArray = b64_encode(&BASE64_STANDARD, &input);

// Write the StringArray to JSON
let batch = RecordBatch::try_from_iter([("col", Arc::new(encoded) as _)]).unwrap();
let mut buf = Vec::with_capacity(1024);
let mut writer = LineDelimitedWriter::new(&mut buf);
writer.write(&batch).unwrap();
writer.finish().unwrap();

// Read the JSON data
let cursor = Cursor::new(buf);
let mut reader = ReaderBuilder::new(batch.schema()).build(cursor).unwrap();
let batch = reader.next().unwrap().unwrap();

// Reverse the base64 encoding
let col: BinaryArray = batch.column(0).as_string::<i32>().clone().into();
let output = b64_decode(&BASE64_STANDARD, &col).unwrap();

assert_eq!(input, output);

依赖项

~6–13MB
~138K SLoC