使用PostgreSQL生成json

Kli*_*Max 2 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;
Run Code Online (Sandbox Code Playgroud)

但得到一个错误:

 ERROR:  type "json" does not exist
 LINE 4:     , ST_AsGeoJSON(lg.the_geom)::json As geometry
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Cra*_*ger 10

jsonPostgreSQL 8.4中没有数据类型.该类型在9.2中引入,但创建了9.1的后向端口; 看到这个bitbucket.

使用text.无论如何,json它只是一个有效的包装text类型,有趣的是类似的函数row_to_json- 它们也不适用于8.4.

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