From 6d0bb82bd270abc7ba3dc6a5ef383536eadd3270 Mon Sep 17 00:00:00 2001 From: Nigel Andrews Date: Tue, 4 Oct 2022 12:07:01 +0200 Subject: [PATCH] Fix issue 1576: serialize bytes as base64 strings --- src/schema/value.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/schema/value.rs b/src/schema/value.rs index bcfcfb74b..3b6d4598a 100644 --- a/src/schema/value.rs +++ b/src/schema/value.rs @@ -48,7 +48,7 @@ impl Serialize for Value { Value::Bool(b) => serializer.serialize_bool(b), Value::Date(ref date) => time::serde::rfc3339::serialize(&date.into_utc(), serializer), Value::Facet(ref facet) => facet.serialize(serializer), - Value::Bytes(ref bytes) => serializer.serialize_bytes(bytes), + Value::Bytes(ref bytes) => String::serialize(&base64::encode(bytes), serializer), Value::JsonObject(ref obj) => obj.serialize(serializer), } } @@ -451,6 +451,23 @@ mod tests { use crate::time::format_description::well_known::Rfc3339; use crate::time::OffsetDateTime; use crate::DateTime; + use crate::Document; + use crate::schema::{BytesOptions, Schema}; + + #[test] + fn test_parse_bytes_doc() { + let mut schema_builder = Schema::builder(); + let bytes_options = BytesOptions::default(); + let bytes_field = schema_builder.add_bytes_field("my_bytes", bytes_options); + let schema = schema_builder.build(); + let mut doc = Document::default(); + doc.add_bytes(bytes_field, "this is a test".as_bytes()); + let json_string = schema.to_json(&doc); + assert_eq!( + json_string, + "{\"my_bytes\":\"dGhpcyBpcyBhIHRlc3Q=\"}" + ); + } #[test] fn test_serialize_date() {