Fix simple serialization of sequences and maps

This commit is contained in:
Tobie Morgan Hitchcock 2023-03-30 16:41:14 +01:00
parent a1d8494de1
commit e41a7f7014
2 changed files with 7 additions and 2 deletions

View file

@ -14,6 +14,7 @@ use crate::sql::value::{value, Value};
use nom::character::complete::char; use nom::character::complete::char;
use nom::combinator::opt; use nom::combinator::opt;
use nom::multi::separated_list0; use nom::multi::separated_list0;
use serde::ser::SerializeSeq;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::collections::HashSet; use std::collections::HashSet;
use std::fmt::{self, Display, Formatter, Write}; use std::fmt::{self, Display, Formatter, Write};
@ -167,7 +168,11 @@ impl Serialize for Array {
if is_internal_serialization() { if is_internal_serialization() {
serializer.serialize_newtype_struct(TOKEN, &self.0) serializer.serialize_newtype_struct(TOKEN, &self.0)
} else { } else {
serializer.serialize_some(&self.to_string()) let mut arr = serializer.serialize_seq(Some(self.len()))?;
for v in &self.0 {
arr.serialize_element(v)?;
}
arr.end()
} }
} }
} }

View file

@ -175,7 +175,7 @@ impl Serialize for Object {
serializer.serialize_newtype_struct(TOKEN, &self.0) serializer.serialize_newtype_struct(TOKEN, &self.0)
} else { } else {
let mut map = serializer.serialize_map(Some(self.len()))?; let mut map = serializer.serialize_map(Some(self.len()))?;
for (ref k, ref v) in &self.0 { for (k, v) in &self.0 {
map.serialize_key(k)?; map.serialize_key(k)?;
map.serialize_value(v)?; map.serialize_value(v)?;
} }