如何将 json 数组传递给 postgresql 函数
How to pass json array to postgresql function
我有一个 json 对象包含 json 数组。
即:
{
ID:'1',
Name:'Pooja',
School:[{Name:'ABC',Address:'Nagpur'},{Name:'CDF'},{Name:'GHI',Year:{From:'2015',To:'2016'}}]
}
我想将其插入三个不同的 table 作为用户、学校和年份。
有人可以帮忙吗?
假设我理解正确,您想拆分提供的 JSON 对象并将其子对象写入某些 tables。
PostgreSQL 有几个 JSON 运算符可能会有所帮助。
首先,您应该将 JSON 的文本表示转换为类型 json
。这允许您使用 JSON 运算符和函数,例如 ->
(获取 JSON 对象字段):
select
'{
"ID":1,
"Name":"Pooja",
"School":[
{
"Name":"ABC",
"Address":"Nagpur"
},
{
"Name":"CDF"
},
{
"Name":"GHI",
"Year":{
"From":"2015",
"To":"2016"
}
}
]
}'::json -> 'Name';
?column?
----------
Pooja
(1 row)
或者,例如,#>
(在指定路径获取 JSON 对象):
select 'YOUR_JSON'::json #> '{"School", 2, "Year"}';
?column?
----------------------------
{ +
"From":"2015",+
"To":"2016" +
}
(1 row)
您现在要做的就是将运算符应用程序的结果插入您选择的 table:
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)
阅读 documentation 了解更多。
我有一个 json 对象包含 json 数组。
即:
{
ID:'1',
Name:'Pooja',
School:[{Name:'ABC',Address:'Nagpur'},{Name:'CDF'},{Name:'GHI',Year:{From:'2015',To:'2016'}}]
}
我想将其插入三个不同的 table 作为用户、学校和年份。
有人可以帮忙吗?
假设我理解正确,您想拆分提供的 JSON 对象并将其子对象写入某些 tables。
PostgreSQL 有几个 JSON 运算符可能会有所帮助。
首先,您应该将 JSON 的文本表示转换为类型 json
。这允许您使用 JSON 运算符和函数,例如 ->
(获取 JSON 对象字段):
select
'{
"ID":1,
"Name":"Pooja",
"School":[
{
"Name":"ABC",
"Address":"Nagpur"
},
{
"Name":"CDF"
},
{
"Name":"GHI",
"Year":{
"From":"2015",
"To":"2016"
}
}
]
}'::json -> 'Name';
?column?
----------
Pooja
(1 row)
或者,例如,#>
(在指定路径获取 JSON 对象):
select 'YOUR_JSON'::json #> '{"School", 2, "Year"}';
?column?
----------------------------
{ +
"From":"2015",+
"To":"2016" +
}
(1 row)
您现在要做的就是将运算符应用程序的结果插入您选择的 table:
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)
阅读 documentation 了解更多。