PgAdmin与应用执行GeoJSON聚合查询结果不一致问题求助
解决PostgreSQL GeoJSON结果被包裹在
json_build_object键下的问题 问题原因
应用的数据库驱动会将查询的列名作为键返回结果,原查询未给jsonb_build_object生成的结果指定别名,驱动默认用函数名json_build_object作为键,把GeoJSON数据包裹在这个键下,导致无法直接解析。
解决方案
给查询结果字段添加明确别名,再在应用中提取该别名对应的值即可。
修改后的SQL语句:
SELECT jsonb_build_object( 'type', 'FeatureCollection', 'features', jsonb_agg(features.feature) ) AS geojson -- 添加别名 FROM( SELECT jsonb_build_object( 'type', 'Feature', 'id', parcelid, 'geometry', ST_AsGeoJSON(ST_GeometryN(geom,1))::jsonb, 'properties', to_jsonb(inputs) - 'parcelid' - 'geom' ) as feature FROM (SELECT * FROM parcels2020) inputs) features;
应用端处理
在应用代码中,不要直接读取整个结果对象,而是提取geojson字段对应的值,就能得到标准的GeoJSON FeatureCollection,可直接解析使用。
内容的提问来源于stack exchange,提问作者Sharitau
相关产品推荐
相关产品推荐

