【发布时间】:2012-08-07 03:49:34
【问题描述】:
我在 postgres 数据库中有以下记录。 parent_pk 与父子关系中的 pk 相关。
pk 名称类型 parent_pk --- ---- ---- --------- 1 hnumber101 房子 0 2 hnumber201 房子 0 101 dodge_charger 车辆 1 102野马车1 103 民用车 2 301约翰用户101 302 爱德华用户 102 303 约翰用户 102 304 约翰用户 103 我想从上面生成一个json,格式如下- [ { “身份证”:1, “名称”:“hnumber101”, “类型”:“房子” “孩子”: [ { “身份证”:101, "name": "道奇充电器", “类型”:“车辆” “孩子”: [{ “身份证”:301, “姓名”:“约翰”, “类型”:“用户” }], }, { “身份证”:102, “名称”:“野马”, “类型”:“车辆” “孩子”: [{ “身份证”:303, “姓名”:“约翰”, “类型”:“用户” }, { “身份证”:302, “姓名”:“爱德华”, “类型”:“用户” }], }], }, { “身份证”:2, “名称”:“hnumber201”, “类型”:“房子” “孩子”: [ { “身份证”:103, “名称”:“公民”, “类型”:“车辆” “孩子”: [{ “身份证”:304, “姓名”:“约翰”, “类型”:“用户” }], }], }]我曾尝试使用 WITH RECURSIVE 查询,但这会产生条目列表,然后我必须在我的 java 代码中进行大量循环/散列映射,才能在父级中获取该子块。 最有效的方法是什么?
【问题讨论】:
-
9.2 对 JSON 的支持非常有限。
row_to_json构造函数不支持匿名行,没有scalar_to_json或json_escape将单个值包装为 JSON,并且没有聚合或合并/附加函数。这使得构建不对应于行类型的值非常困难:-( -
您是否有将 JSON 文件加载到数据库表中并保留 ID 和 parentID 的代码?
标签: java json postgresql recursive-query self-join