我有一个json对象包含json数组。
即:
{
ID:'1',
Name:'Pooja',
School:[{Name:'ABC',Address:'Nagpur'},{Name:'CDF'},{Name:'GHI',Year:{From:'2015',To:'2016'}}]
}
我想将其插入三个不同的表格中,分别为User,School和Year。
有人可以帮忙吗?
答案 0 :(得分:2)
假设我理解正确,您希望拆分提供的JSON对象并将其子对象写入某些表。
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)
您现在要做的就是将操作员应用程序的结果插入到您选择的表中:
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)
阅读documentation了解更多信息。