PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#2 PL/pgSQL » Guillemets qui s'insèrent lors de la création d'un json » 12/10/2021 16:01:37

PaulineJ
Réponses : 2

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

Pied de page des forums

Propulsé par FluxBB