我正在为我的for应用程序使用postgresql。我对这个Postgresql-json是个新手。我只想以json结构的形式获得select查询结果。以下是我的详细信息:
create table sample(id serial, info jsonb);
insert into sample("info") values('{"person": {"phone": 9804484234,"name":{"firstname":"Alice", "lastname":"bob"}, "empId": "E067", "age":25}');选择查询:
select "info"->'person'->>'lastname' from sample;结果: bob
但我想要获得上面的结果以及如下所示的json节点:
result: {"person":
{"name":
{"lastname":"bob"}
}
}谁能告诉我如何从数据库中获得我期望的结果结构?
发布于 2016-05-05 08:33:21
将会简单得多:
A-一个普通的postgresSQL数据库,并将响应转换为json.
公共类SOF_36861985 {公共静态数组( JSONArray res)抛出异常{ JSONArray数组=新的JSONArray();而(res.next()) { int SOF_36861985= res.getMetaData().getColumnCount();JSONObject obj =新的JSONObject();for (int i= 0;i< size;i++) { obj.put( res .getMetaData() .getColumnLabel(i + 1) .toLowerCase(),res.getObject(i + 1));array.put(obj);}}返回数组;} }
或
B.使用作为json本机数据库的mongoDB
解决方案A与解决方案B的比较
解决方案A: sql +不会强迫你有一个新的数据库,你将继续使用postgressql -将从ResultSet转换到Json -将在SQL数据库中拥有静态模式(没有nosql中的动态模式)
解决方案B: mongo -对数据库进行更改,即依赖于生产...并对基础设施产生影响...+是json原生DB +对你来说可能是一个新的DB,你将有学习的时间来掌握它(将需要更多的时间来设置,安装,开发...)
发布于 2016-05-05 16:11:17
如果路径是固定的,则可以将所遵循的路径作为字符串常量进行复制。
select '{"person":{"name":{"lastname":"' ||
(info->'person'->'name'->>'lastname') ||
'"}}}'as val from sample;发布于 2016-05-06 08:50:18
SELECT json_build_object("person",
json_build_object("name",
json_build_object("lastname",
(info->'person'->'name'->>'lastname'))))
AS val FROM sample;https://stackoverflow.com/questions/36861985
复制相似问题