Vous n'êtes pas identifié(e).
Bonjour,
Je cherche à créer une fonction qui me permettrait d'obtenir un recordset de json à partir d'une table insérée grâce à PostGIS.
J'arrive à obtenir le bon résultat si je fais une "simple" requête :
SELECT row_to_json(fc)
FROM (
SELECT
'Feature' AS "type",
ST_AsGeoJSON(geom,4326) :: json AS "geometry",
(
SELECT json_strip_nulls(row_to_json(t))
FROM (
SELECT '20-07-2021' AS day, ndvi,sf,vigueur
)t
) AS properties
FROM cartocep_tot84
) AS fc;
Résultat correct (exemple d'une ligne de résultat) :
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-0.628998380703444,
44.8235552388883
]
},
"properties": {
"day": "20-07-2021",
"ndvi": 0.58,
"sf": 0.28,
"vigueur": 0.48
}
}
Mais quand je veux insérer cette requête dans une procédure, je me retrouve avec plein de guillemets double qui s'insèrent à chaque élément :
Voici ma procédure :
CREATE OR REPLACE FUNCTION public.get_geojson(measurement_date text)
RETURNS SETOF record
LANGUAGE 'sql'
COST 100
VOLATILE
ROWS 1000
AS $BODY$
SELECT row_to_json(fc)
FROM (
SELECT
'Feature' AS "type",
ST_AsGeoJSON(geom,4326) :: json AS "geometry",
(
SELECT json_strip_nulls(row_to_json(t))
FROM (
SELECT measurement_date AS day, ndvi,sf,vigueur
)t
) AS properties
FROM cartocep_tot84
) AS fc
$BODY$;
ALTER FUNCTION public.get_geojson(text)
OWNER TO postgres;
Et le mauvais résultat (exemple d'une ligne de résultat) :
("{""type"":""Feature"",""geometry"":{""type"":""Point"",""coordinates"":[-0.628998380703444,44.8235552388883]},""properties"":{""day"":""20-07-2021"",""ndvi"":0.58,""sf"":0.28,""vigueur"":0.48}}")
Savez-vous d'où pourraient provenir ces doubles guillemets intempestifs ? Et comment je pourrais faire en sorte qu'ils n'apparaissent pas ?
Merci d'avance pour le temps que vous prendrez !
Pauline
Hors ligne
Ces guillemets font partie du format "RECORD" qui encapsule une ligne de résultat.
Déclarez plutôt la fonction en RETURNS SETOF json au lieu de RETURNS SETOF RECORD, ça devrait être plus conforme au résultat voulu.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Super merci pour la réponse, c'est bien ça !
Hors ligne