首页 > 解决方案 > 如何在 postgres 中声明 JSON 字符串?

问题描述

在 POSTGRES 中有很多 json 解析的例子,它们从表中提取数据。我有一个方便的原始 json 字符串,想练习使用JSON 函数和运算符。是否可以在不使用表格的情况下做到这一点?或者......将其声明为变量的最直接方法是什么?就像是...

# Declare
foojson = "{'a':'foo', 'b':'bar'}"

# Use
jsonb_array_elements(foojson) -> 'a'

基本上,我希望最后一行打印到控制台或可包装在 SELECT 语句中,以便我可以快速“玩”其中一些运算符。

标签: jsonpostgresql

解决方案


您可以将其直接传递给函数

select '{"a": "foo", "b": "bar"}'::jsonb ->> 'a';

select *
from jsonb_each('{"a": "foo", "b": "bar"}');

select *
from jsonb_array_elements('[{"a": "foo"}, {"b": "bar"}]');

或者,如果您想假装,它是表格的一部分:

with data (json_value) as (
  values 
    ('{"a": "foo", "b": "bar"}'::jsonb), 
    ('{"foo": 42, "x": 100}')
)
select e.*
from data d
  cross join jsonb_each(d.json_value) as e;


with data (json_value) as (
  values 
    ('{"a": 1, "b": "x"}'::jsonb), 
    ('{"a": 42, "b": "y"}')
)
select d.json_value ->> 'a',
       d.json_value ->> 'b'
from data d;

推荐阅读