将包含数组的动态json对象反序列化到postgres表使用postgres

unftdfkk  于 2023-01-10  发布在  其他
关注(0)|答案(1)|浏览(110)

“代码1”:{“对象1”:[ {“样品名称”:“1”,“样本代码”:“1”,“样品_序列”:“01”,“参数”:[ {“参数1”:“参数1”、“参数2”:“参数2”、“参数3”:“参数3”、“参数4”:“参数4”、“参数5”:“参数5”、“参数6”:“参数6”}],] }
这是我的示例json,我想在后端使用postgres动态地反序列化它。我可以使用“Testdata”反序列化数组,但代码“code 1”:{“obj 1”等等我无法反序列化它。代码1,obj 1,obj 2是在Json中动态创建的。如有任何帮助将不胜感激。谢谢
我尝试将数组反序列化为表。我希望使用数组. Also I am able to get all keys from json_object_keys(jsondata) as key in but not able to get the data反序列化对象

x4shl7ld

x4shl7ld1#

根据JSON数据自身的结构,反序列化JSON数据的方法有很多,下面是一个可能的解决方案:

SELECT a->>'key' AS key, a->>'value' AS value
  FROM jsonb_path_query('{"code1": { "obj1": [ { "sample_name": "1", "sample_code": "1", "sample_serial": "01", "parameters": [ { "param1": "param1", "param2": "param2", "param3": "param3", "param4": "param4", "param5": "param5", "param6": "param6" }]}]}}' :: jsonb, '$.** ? (@.type() == "object").keyvalue()') AS a

结果:
| 钥匙|价值|
| - ------| - ------|
| 代码1| {"对象1 ":[{"参数":[{"参数1 ":"参数1"、"参数2":"参数2"、"参数3":"参数3"、"参数4":"参数4"、"参数5":"参数5"、"参数6":"参数6 "}],"样本代码":"1","样本名称":"1","样品_序列":"01 "}]}|
| 目标1| [{"参数":[{"参数1 ":"参数1"、"参数2":"参数2"、"参数3":"参数3"、"参数4":"参数4"、"参数5":"参数5"、"参数6":"参数6 "}],"样本代码":"1","样本名称":"1","样品_序列":"01 "}]|
| 参数|[{"参数1 ":"参数1"、"参数2":"参数2"、"参数3":"参数3"、"参数4":"参数4"、"参数5":"参数5"、"参数6":"参数6 "}]|
| 样本代码|1个|
| 样品名称|1个|
| 样品_序列|一|
| 参数|[{"参数1 ":"参数1"、"参数2":"参数2"、"参数3":"参数3"、"参数4":"参数4"、"参数5":"参数5"、"参数6":"参数6 "}]|
| 样本代码|1个|
| 样品名称|1个|
| 样品_序列|一|
| 参数1|参数1|
| 参数2|参数2|
| 参数3|参数3|
| 参数4|参数4|
| 参数5|参数5|
| 参数6|参数6|
| 参数1|参数1|
| 参数2|参数2|
| 参数3|参数3|
| 参数4|参数4|
| 参数5|参数5|
| 参数6|参数6|
参见dbfiddle

相关问题