Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在Postgres 9.4中解析4-deep嵌套json数组_Arrays_Json_Postgresql_Nested - Fatal编程技术网

Arrays 在Postgres 9.4中解析4-deep嵌套json数组

Arrays 在Postgres 9.4中解析4-deep嵌套json数组,arrays,json,postgresql,nested,Arrays,Json,Postgresql,Nested,我需要一些解析json的帮助,以便对其进行分析。这是位置随附的远程站测量数据 我必须回答两个简单的问题,到目前为止,我已经做到了,但这让我的大脑无法理解其中的一些行为 嵌套数组(四个深度)是主要问题。我不明白为什么jsonb_数组_元素调用上的横向联接不能起作用 我用的是postgres 9.4.4 下面是示例json,我正在尝试使用的pg/sql也是示例json 下面是示例json。数据的解剖/规格和一个漂亮的版本可以在下面找到: { “SiteRep”:{ “Wx”:{ “参数”:[ { “

我需要一些解析json的帮助,以便对其进行分析。这是位置随附的远程站测量数据

我必须回答两个简单的问题,到目前为止,我已经做到了,但这让我的大脑无法理解其中的一些行为

嵌套数组(四个深度)是主要问题。我不明白为什么jsonb_数组_元素调用上的横向联接不能起作用

我用的是postgres 9.4.4

下面是示例json,我正在尝试使用的pg/sql也是示例json

下面是示例json。数据的解剖/规格和一个漂亮的版本可以在下面找到:

{ “SiteRep”:{ “Wx”:{ “参数”:[ { “名称”:“D”, “单位”:“指南针”, “$”:“风向” }, { “名称”:“H”, “单位”:“%”, “$”:“屏幕相对湿度” } ] }, “DV”:{ “数据日期”:“2014-09-23T20:00:00Z”, “类型”:“O”, “地点”:[ { “i”:“3002”, “lat”:“60.749”, “lon”:“-0.854”, “名称”:“巴尔塔松”, “国家”:“苏格兰”, “大陆”:“欧洲”, “标高”:“15.0”, “期间”:[ { “类型”:“天”, “价值”:“2014-09-22Z”, “代表”:[ { “D”:“SSW”, “H”:“88.5”, "$": "1200" }, { “D”:“S”, “H”:“91.6”, "$": "1260" }, { “D”:“SSW”, “H”:“92.8”, "$": "1320" }, { “D”:“W”, “H”:“92.8”, "$": "1380" } ] }, { “类型”:“天”, “价值”:“2014-09-23Z”, “代表”:[ { “D”:“W”, “H”:“88.5”, "$": "0" }, { “D”:“W”, “H”:“86.7”, "$": "60" }, { “D”:“W”, “H”:“86.2”, "$": "120" }, { “D”:“WSW”, “H”:“87.9”, "$": "180" } ] } ] }, { “i”:“3005”, “lat”:“60.139”, “lon”:“-1.183”, “名称”:“勒威克(南屏幕)”, “国家”:“苏格兰”, “大陆”:“欧洲”, “标高”:“82.0”, “期间”:[ { “类型”:“天”, “价值”:“2014-09-22Z”, “代表”:[ { “D”:“SSW”, “H”:“95.3”, "$": "1200" }, { “D”:“SSW”, “H”:“97.4”, "$": "1260" }, { “D”:“SW”, “H”:“97.3”, "$": "1320" }, { “D”:“W”, “H”:“94.1”, "$": "1380" } ] }, { “类型”:“天”, “价值”:“2014-09-23Z”, “代表”:[ { “D”:“WNW”, “H”:“89.1”, "$": "0" }, { “D”:“WNW”, “H”:“88.0”, "$": "60" }, { “D”:“W”, “H”:“90.9”, "$": "120" }, { “D”:“W”, “H”:“90.9”, "$": "180" } ] } ] } ] } } }

我正在加载此代码:

drop table if exists foo;
create table public.foo (data jsonb);

truncate foo;
copy foo from <example json as above>
DELIMITERS e'\x02';
注意,第二个横向连接已注释掉。马上就有更多

上面的调用返回两行:

    location_date      |   i    |   lat    |   lon    | p_value | type |                                value                                
------------------------+--------+----------+----------+---------+------+---------------------------------------------------------------------
"2014-09-23T20:00:00Z" | "3002" | "60.749" | "-0.854" |         |      | {"i": "3002", "lat": "60.749", "lon": "-0.854", "name": "BALTASO...
"2014-09-23T20:00:00Z" | "3005" | "60.139" | "-1.183" |         |      | {"i": "3005", "lat": "60.139", "lon": "-1.183", "name": "LERWICK...
现在,如果我取消注释第二个横向联接,它将返回零行:

 location_date | i | lat | lon | value | type | value 
---------------+---+-----+-----+-------+------+-------
(0 rows)
然而,如果我看一下“data”->“SiteRep”->“DV”->“Location”->“Period”的值是什么,就会知道我在它上面调用的jsonb_数组元素是什么:

   i    |                               Period                                
--------+---------------------------------------------------------------------
 "3002" | [{"Rep": [{"$": "1200", "D": "SSW", "H": "88.5"}, {"$": "1260", ...
 "3005" | [{"Rep": [{"$": "1200", "D": "SSW", "H": "95.3"}, {"$": "1260", ...
我认为这应该是好的

知道我做错了什么吗?知道如何将多个嵌套数组解析为表吗


我尝试过,但无法将这些解决方案应用于我的json,因为它们不够深入,或者我误解了我的json。

json的剖析可以在页面底部找到
   i    |                               Period                                
--------+---------------------------------------------------------------------
 "3002" | [{"Rep": [{"$": "1200", "D": "SSW", "H": "88.5"}, {"$": "1260", ...
 "3005" | [{"Rep": [{"$": "1200", "D": "SSW", "H": "95.3"}, {"$": "1260", ...