This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/master by this push:
     new bd19a62446 Add example of converting RecordBatches to JSON objects 
(#5364)
bd19a62446 is described below

commit bd19a624469df652f24ee37b65056535ff665769
Author: Andrew Lamb <[email protected]>
AuthorDate: Mon Feb 5 06:01:51 2024 -0500

    Add example of converting RecordBatches to JSON objects (#5364)
    
    * Add example of converting RecordBatches to JSON objects
    
    * twea
    
    * Update docs
    
    * Use from_reader and simplify example
---
 arrow-json/src/writer.rs | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/arrow-json/src/writer.rs b/arrow-json/src/writer.rs
index dd77328cb7..acca702907 100644
--- a/arrow-json/src/writer.rs
+++ b/arrow-json/src/writer.rs
@@ -74,7 +74,36 @@
 //! [`LineDelimitedWriter`] and [`ArrayWriter`] will omit writing keys with 
null values.
 //! In order to explicitly write null values for keys, configure a custom 
[`Writer`] by
 //! using a [`WriterBuilder`] to construct a [`Writer`].
-
+//!
+//! ## Writing to [serde_json] JSON Objects
+//!
+//! To serialize [`RecordBatch`]es into an array of
+//! [JSON](https://docs.serde.rs/serde_json/) objects you can reparse the 
resulting JSON string.
+//! Note that this is less efficient than using the `Writer` API.
+//!
+//! ```
+//! # use std::sync::Arc;
+//! # use arrow_array::{Int32Array, RecordBatch};
+//! # use arrow_schema::{DataType, Field, Schema};
+//! let schema = Schema::new(vec![Field::new("a", DataType::Int32, false)]);
+//! let a = Int32Array::from(vec![1, 2, 3]);
+//! let batch = RecordBatch::try_new(Arc::new(schema), 
vec![Arc::new(a)]).unwrap();
+//!
+//! // Write the record batch out as json bytes (string)
+//! let buf = Vec::new();
+//! let mut writer = arrow_json::ArrayWriter::new(buf);
+//! writer.write_batches(&vec![&batch]).unwrap();
+//! writer.finish().unwrap();
+//! let json_data = writer.into_inner();
+//!
+//! // Parse the string using serde_json
+//! use serde_json::{Map, Value};
+//! let json_rows: Vec<Map<String, Value>> = 
serde_json::from_reader(json_data.as_slice()).unwrap();
+//! assert_eq!(
+//!     serde_json::Value::Object(json_rows[1].clone()),
+//!     serde_json::json!({"a": 2}),
+//! );
+//! ```
 mod encoder;
 
 use std::iter;

Reply via email to