栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Postgres中收集递归JSON键

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Postgres中收集递归JSON键

诀窍是

json_typeof
在正确的位置添加一些最终条件测试。

jsonb
如果您不关心对象键顺序,也应该使用。

这是我的工作环境:

CREATE TABLE test (  id  SERIAL PRIMARY KEY,  doc JSON);INSERT INTO test (doc) VALUES ('{ "files": {  "folder": {   "file1": {    "property": "blah"   },   "file2": {    "property": "blah"   },   "file3": {    "property": "blah"   },   "file4": {    "property": "blah",    "prop" : {      "clap": "clap"    }   } }},"software": {  "apt": {    "package1": {        "version": 1.2    },    "package2": {        "version": 1.2    },    "package3": {        "version": 1.2    },    "package4": {        "version": 1.2    }  } }}');

当第二个查询不返回任何行时,递归将停止。这是通过将空对象传递到来完成的

json_each

 WITH RECURSIVE doc_key_and_value_recursive(key, value) AS (  SELECt    t.key,    t.value  FROM test, json_each(test.doc) AS t  UNIOn ALL  SELECt    t.key,    t.value  FROM doc_key_and_value_recursive,    json_each(CASE       WHEN json_typeof(doc_key_and_value_recursive.value) <> 'object' THEN '{}' :: JSON      ELSE doc_key_and_value_recursive.value    END) AS t)SELECt *FROM doc_key_and_value_recursiveWHERe json_typeof(doc_key_and_value_recursive.value) <> 'object';


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418355.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号