【发布时间】:2016-03-04 21:19:12
【问题描述】:
{
"studentID": 1,
"StudentName": "jhon",
"Data":{
"schoolname":"school1",
"enrolmentInfo":
[{
"year":"2015",
"info":
[
{
"courseID":"csc213",
"school":"IT",
"enrollmentdate":"2015-01-01",
"finshdate":"2015-07-01",
"grade": 80 },
{
"courseID":"csc113",
"school":"IT1",
"enrollmentdate":"2015-09-02",
"finshdate":null,
"grade": 90 } ]
},
{
"year":"2014",
"info":
[{
"courseID":"info233",
"school":"IT",
"enrollmentdate":"2014-03-11",
"finshdate":"2014-09-01",
"grade": 81 },
{
"courseID":"csc783",
"school":"IT",
"enrollmentdate":"2014-01-02",
"finshdate":"2014-08-01",
"grade": 87 } ]
} ]
}
}
我已将上述格式的 json 对象存储在 postgresql 数据库中。每个对象都包含有关某个学生的信息以及注册信息。我在数组中有嵌套数组的复杂对象。我正在尝试选择“信息”数组中的所有元素。我尝试使用以下查询:
with recursive x (info) as (select value->'info' from jsontesting r, json_array_elements(r.data->'Data'->'enrolmentinfo')
UNION ALL
SELECT (e).value->'courseID', (e).value->'school', (e).value->'grade',(e).value->'enrollmentdate', (e).value->'finshdate'
from (select json_each(json_array_elements (info)) e from x) p)
select * from x;
此查询不起作用,它给出以下错误:“无法在标量上调用 json_array_elements”。是否有任何其他查询可用于提取嵌套数组“info”的元素??
【问题讨论】:
-
json.net 专门用于.Net library Json.NET。由于您似乎没有使用此库,因此我删除了标签。
-
请提供一个有效的 json 值。这个有多个语法错误,缺少双引号和逗号 AFAICS。为什么在要求 9.4 或 9.5 时标记 [postgres-9.3]?
标签: arrays json postgresql