You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add support for de/serializing list-encoded JSON structs [#6558] (#6643)
Currently, a StructArray can only be deserialized from or serialized to
a JSON object (e.g. `{a: 1, b: "c"}`), but some services (e.g. Presto
and Trino) encode ROW types as JSON lists (e.g. `[1, "c"]`) because this
is more compact, and the schema is known.
This PR adds the ability to encode and decode JSON lists from and to
StructArrays, if StructMode is set to ListOnly. In ListOnly mode,
object-encoded structs raise an error. Setting to ObjectOnly (the
default) has the original parsing behavior.
Some notes/questions/points for discussion:
1. I've made a JsonParseMode struct instead of a bool flag for two
reasons. One is that it's self-descriptive (what would `true` be?),
and the other is that it allows a future Mixed mode that could
deserialize either. The latter isn't currently requested by anyone.
2. I kept the error messages as similar to the old messages as possible.
I considered having more specific error messages (like "Encountered a
'[' when parsing a Struct, but the StructParseMode is ObjectOnly" or
similar), but wanted to hear opinions before I went that route.
3. I'm not attached to any name/code-style/etc, so happy to modify to
fit local conventions.
Fixes#6558
0 commit comments