如何将json数组传递给postgresql函数

如何将json数组传递给postgresql函数,postgresql,postgresql-9.3,Postgresql,Postgresql 9.3,我有一个包含json数组的json对象 i、 e: 我想把它插入三个不同的表中,分别是用户、学校和年份 有人能帮忙吗?假设我理解正确,您希望分割提供的JSON对象并将其子对象写入一些表中 PostgreSQL有几个JSON操作符可能会有所帮助 首先,您应该将JSON的文本表示形式转换为typeJSON。这允许您使用JSON运算符和函数,例如->(获取JSON对象字段): 或者,例如,#>(在指定路径获取JSON对象): 现在只需将操作员应用程序的结果插入您选择的表中: insert into u

我有一个包含json数组的json对象

i、 e:

我想把它插入三个不同的表中,分别是用户、学校和年份


有人能帮忙吗?

假设我理解正确,您希望分割提供的JSON对象并将其子对象写入一些表中

PostgreSQL有几个JSON操作符可能会有所帮助

首先,您应该将JSON的文本表示形式转换为type
JSON
。这允许您使用JSON运算符和函数,例如
->
(获取JSON对象字段):

或者,例如,
#>
(在指定路径获取JSON对象):

现在只需将操作员应用程序的结果插入您选择的表中:

insert into user select 'YOUR_JSON'::json -> 'Name';
如果只想提取School数组,仍然可以使用
->
运算符:

select 'YOUR_JSON'::json -> 'School';

          ?column?           
-----------------------------
 [                          +
       {                    +
          "Name":"ABC",     +
          "Address":"Nagpur"+
       },                   +
       {                    +
          "Name":"CDF"      +
       },                   +
       {                    +
          "Name":"GHI",     +
          "Year":{          +
             "From":"2015", +
             "To":"2016"    +
          }                 +
       }                    +
    ]
(1 row)

阅读更多信息。

谢谢,我觉得这会对我有更好的帮助。谢谢,我的问题现在解决了。我必须在其中增加一些功能。但它现在正在发挥作用。
select 'YOUR_JSON'::json #> '{"School", 2, "Year"}';

          ?column?          
----------------------------
 {                         +
             "From":"2015",+
             "To":"2016"   +
          }
(1 row)
insert into user select 'YOUR_JSON'::json -> 'Name';
select 'YOUR_JSON'::json -> 'School';

          ?column?           
-----------------------------
 [                          +
       {                    +
          "Name":"ABC",     +
          "Address":"Nagpur"+
       },                   +
       {                    +
          "Name":"CDF"      +
       },                   +
       {                    +
          "Name":"GHI",     +
          "Year":{          +
             "From":"2015", +
             "To":"2016"    +
          }                 +
       }                    +
    ]
(1 row)