On Wed, Dec 6, 2023 at 4:29 PM Joe Conway <m...@joeconway.com> wrote:
> > 1. Outputting a top level JSON object without the additional column > > keys. IIUC, the top level keys are always the column names. A common use > > case would be a single json/jsonb column that is already formatted > > exactly as the user would like for output. Rather than enveloping it in > > an object with a dedicated key, it would be nice to be able to output it > > directly. This would allow non-object results to be outputted as well > > (e.g., lines of JSON arrays, numbers, or strings). Due to how JSON is > > structured, I think this would play nice with the JSON lines v.s. array > > concept. > > > > COPY (SELECT json_build_object('foo', x) AS i_am_ignored FROM > > generate_series(1, 3) x) TO STDOUT WITH (FORMAT JSON, > > SOME_OPTION_TO_NOT_ENVELOPE) > > {"foo":1} > > {"foo":2} > > {"foo":3} > > Your example does not match what you describe, or do I misunderstand? I > thought your goal was to eliminate the repeated "foo" from each row... > The "foo" in this case is explicit as I'm adding it when building the object. What I was trying to show was not adding an additional object wrapper / envelope. So each row is: {"foo":1} Rather than: "{"json_build_object":{"foo":1}} If each row has exactly one json / jsonb field, then the user has already indicated the format for each row. That same mechanism can be used to remove the "foo" entirely via a json/jsonb array. Regards, -- Sehrope Sarkuni Founder & CEO | JackDB, Inc. | https://www.jackdb.com/