Re: returning json object with subset of keys

Поиск
Список
Период
Сортировка
От Raphael Bauduin
Тема Re: returning json object with subset of keys
Дата
Msg-id CAONrwUFavuf17JSoE6bkGJ+XQUkhi5DmcTrP6XTZ42g1WN7fLg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: returning json object with subset of keys  (Merlin Moncure <mmoncure@gmail.com>)
Ответы Re: returning json object with subset of keys
Список pgsql-general



On Wed, Jan 8, 2014 at 4:05 PM, Merlin Moncure <mmoncure@gmail.com> wrote:
On Wed, Jan 8, 2014 at 6:37 AM, Raphael Bauduin <rblists@gmail.com> wrote:
> Hi
>
> I'm using the json functionalities of postgresql 9.3.
> I have a query calling json_populate_recordset like this:
>   json_populate_recordset(null::product, event->'products')
> but it returns an error:
> ERROR:  cannot call json_populate_recordset on a nested object
>
> There is indeed one key in event->'products' giving access to an array of
> objects.
>
> Is there a way to specify which keys to keep from the object? I haven't
> found ti in the docs.
>
> Here is pseudo code of what I'd like to do:
>   json_populate_recordset(null::product, event->'products' WITH ONLY KEYS
> {'f1','f2'})

unfortunately, not without manipulating the json.  this is basically a
somewhat crippling limitation of the json_populate functions -- they
can't handle anything but flat tuples.  so you have to do something
highly circuitous.

problem (one record):
postgres=# create table foo(a text, b text);
postgres=# select json_populate_record(null::foo, '{"a": "abc", "b":
"def", "c": [1,2,3]}'::json);
ERROR:  cannot call json_populate_record on a nested object

nasty solution:
postgres=# with data as (select '{"a": "abc", "b": "def", "c":
[1,2,3]}'::json as j)
select json_populate_record(null::foo, row_to_json(q)) from
(
  select j->'a' as a, j->'b' as b from data
) q;
 json_populate_record
----------------------
 (abc,def)

with some extra manipulations you can do a record set. basically, you
need to get the json 'right' first (or that can be done on the
client).

merlin


ok, thanks for your reply.
Is this considered to be added in the future to the json functions available? I could use it frequently I think.

Cheers

raph

В списке pgsql-general по дате отправления:

Предыдущее
От: John R Pierce
Дата:
Сообщение: Re: Last inserted row id with complex PK
Следующее
От: Sameer Kumar
Дата:
Сообщение: Re: argument of CASE/WHEN must not return a set