使用PostgreSQL生成json

时间:2013-01-22 07:04:27

标签: postgresql postgis

我有postgreSQL 8.4 + PostGIS 1.5。

我想生成GeoJson。我这样做:

SELECT row_to_json(fc)
 FROM ( SELECT 'FeatureCollection' As type, array_to_json(array_agg(f)) As features
 FROM (SELECT 'Feature' As type
, ST_AsGeoJSON(lg.the_geom)::json As geometry
, row_to_json(lp) As properties
   FROM parcels_temp As lg 
     INNER JOIN (SELECT num, cadastr FROM parcels_temp) As lp 
   ON lg.num = lp.num  ) As f )  As fc;

但是得到一个错误:

 ERROR:  type "json" does not exist
 LINE 4:     , ST_AsGeoJSON(lg.the_geom)::json As geometry

我做错了什么?

1 个答案:

答案 0 :(得分:10)

PostgreSQL 8.4中没有json数据类型。该类型在9.2中引入,但创建了一个9.1的后端;见this bitbucket

使用textjson只是一个围绕text类型的验证包装,有趣的是像row_to_json这样的函数 - 不可用于8.4。

如果你不能使用text - 比如说,因为你正在使用期望json的第三方代码,或者因为你需要json函数 - 那么是时候升级PostgreSQL了。无论如何,8.4正在变得相当老,就像PostGIS 1.5一样。