create table json_data(row_id int, json_text jsonb);

insert into json_data(1,
'[{"ID":"1","location_name":"Test"},{"ID":"2","location_name":"Examples"}]');

To search for an ID

select row_id, parsed.* from json_data, lateral
jsonb_to_recordset(json_data.json_text) as parsed("ID" text, location_name
text) where parsed."ID" = '1';

To get all records just drop the where clause.

Obviously you could use the result to insert the data into a table as well
if you wished.

As to results to json

select row_to_json(row_data) from (select id, parsed.* from json_data,
lateral jsonb_to_recordset(json_data.json_text) as parsed("ID" text,
location_name text)) row_data;

While the number of examples are weak - the docs are not weak in terms of
getting you in the ballpark.

John


On Fri, Jan 23, 2015 at 12:20 PM, Tim Smith <randomdev4+postg...@gmail.com>
wrote:

> So basically we're saying JSON in 9.4 is still a little way from where
> it needs to be in terms of real-world functionality ?  Or am I being
> too harsh ? ;-)
>
> On 23 January 2015 at 18:49, Adrian Klaver <adrian.kla...@aklaver.com>
> wrote:
> > On 01/23/2015 10:15 AM, Tim Smith wrote:
> >>>
> >>> How does it not work?
> >>> In other words what was the query you tried and what was the output?
> >>
> >>
> >> As in, it doesn't work.   Full stop....
> >>
> >> \d+ json_test
> >>                        Table "public.json_test"
> >>   Column  | Type  | Modifiers | Storage  | Stats target | Description
> >> ---------+-------+-----------+----------+--------------+-------------
> >>   content | jsonb | not null  | extended |              |
> >> Indexes:
> >>      "idxgin" gin (content)
> >>
> >>
> >>   truncate json_test;
> >> TRUNCATE TABLE
> >>   insert into json_test(content)  values('[{"ID":
> "3119","Desc":"bob"}]');
> >> INSERT 0 1
> >>
> >> select content->'Desc' from json_test where content @> '{"ID":"3119"}';
> >>   ?column?
> >> ----------
> >> (0 rows)
> >>
> >
> > WITH c AS
> >     (SELECT
> >         jsonb_array_elements(content) AS content
> >     FROM
> >     json_test)
> > SELECT
> >     content->'Desc'
> > FROM
> >     c
> > WHERE
> >     content @> '{"ID":"3119"}'
> >
> >  ?column?
> > ----------
> >  "bob"
> > (1 row)
> >
> >
> > With the caveats that Christophe Pettus  mentioned.
> >
> >>> --
> >>> Adrian Klaver
> >>> adrian.kla...@aklaver.com
> >>
> >>
> >>
> >
> >
> > --
> > Adrian Klaver
> > adrian.kla...@aklaver.com
>
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general
>

Reply via email to