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).

#1 Général » Conversion requête en json » 17/06/2016 11:12:56

YoussefDu16
Réponses : 2

Bonjour à tous,

J'ai une requête que je souhaiterai convertir en un format de données JSON grâce aux fonctions postgresql.

voici un exemple de mon code :
select row_to_json(t)
from (
  select text, pronunciation,
    (
      select array_to_json(array_agg(row_to_json(d)))    \\   un objet tableau
      from (
        select part_of_speech, body            \\ les informations qui sont censées s'imbriquer dans le tableau
        from definitions
        where word_id=words.id
        order by position asc
      ) d
    ) as definitions 
  from words
  where text = 'autumn'
) t



Mon problème se situe au niveau de l’imbrication, cela ne s'imbrique pas du tout mais duplique les lignes "text" et "pronunciation" pour afficher toutes les "definitions"

Voici le résultat attendu :

{
  "text": "autumn",
  "pronunciation": "autumn",
  "definitions": [
    {
        "part_of_speech": "noun",
        "body": "skilder wearifully uninfolded..."
    },
    {
        "part_of_speech": "verb",
        "body": "intrafissural fernbird kittly..."
    },
    {
        "part_of_speech": "adverb",
        "body": "infrugal lansquenet impolarizable..."
    }
  ]
}


Or j'obtiens le résultat suivant qui n'est pas du tout satisfaisant :
{
  "text": "autumn",
  "pronunciation": "autumn",
  "definitions": [
    {
        "part_of_speech": "noun",
        "body": "skilder wearifully uninfolded..."
    }
  ]
  "text": "autumn",
  "pronunciation": "autumn",
  "definitions": [
    {
        "part_of_speech": "noun",
        "body": "intrafissural fernbird kittly..."
    },
  ]
  "text": "autumn",
  "pronunciation": "autumn",
  "definitions": [
    {
        "part_of_speech": "noun",
        "body": "infrugal lansquenet impolarizable..."
    },
  ]
}

Je sèche complément sur le coup j'ai beau cherché je ne trouve aucune explication ni solution !

Merci pour votre aide.

#2 Re : Général » Exporter format json » 16/06/2016 14:53:25

Voila ce que j'obtiens avec ma requête :


[
{             "lignename" : "BERNARD",
        "parcoursid" : 19761,
        "courseid" : 20723,
        "origine_destination" : "ALBERT",
        "evt_comptage" : [{
                "stopname" : "HENRY",
                "stoptime" : "2016-01-18T21:15:29",
                "latitude" : 48.618111,
                "longitude" : -1.510928,
                "passagersin" : 0,
                "passagersout" : 0
            }
        ]
    }, {
        "lignename" : "BERNARD",
        "parcoursid" : 19761,
        "courseid" : 20723,
        "origine_destination" : "ALBERTL",
        "evt_comptage" : [{
                "stopname" : "HENRY",
                "stoptime" : "2016-01-18T21:29:03",
                "latitude" : 48.631719,
                "longitude" : -1.508361,
                "passagersin" : 13,
                "passagersout" : 1
            }
        ]
   }
]


Or moi je voudrai plutôt :

[
{             "lignename" : "BERNARD",
        "parcoursid" : 19761,
        "courseid" : 20723,
        "origine_destination" : "ALBERT",
        "evt_comptage" : [{
                "stopname" : "HENRY",
                "stoptime" : "2016-01-18T21:15:29",
                "latitude" : 48.618111,
                "longitude" : -1.510928,
                "passagersin" : 0,
                "passagersout" : 0
            },{
                                "stopname" : "HENRY",
                "stoptime" : "2016-01-18T21:29:03",
                "latitude" : 48.631719,
                "longitude" : -1.508361,
                "passagersin" : 13,
                "passagersout" : 1
                          }
                        ]
   }
]

#3 Général » Exporter format json » 16/06/2016 13:50:59

YoussefDu16
Réponses : 3

Bonjour à tous,

Je souhaiterai exporter une requête qui est transformée en format JSON mais j'ai un problème à ce niveau, je souhaite obtenir un résultat tel que :

{
  "text": "autumn",
  "pronunciation": "autumn",
  "definitions": [
    {
        "part_of_speech": "noun",
        "body": "skilder wearifully uninfolded..."
    },
    {
        "part_of_speech": "verb",
        "body": "intrafissural fernbird kittly..."
    },
    {
        "part_of_speech": "adverb",
        "body": "infrugal lansquenet impolarizable..."
    }
  ]
}

Mais j'obtiens plutôt ça :
{
  "text": "autumn",
  "pronunciation": "autumn",
  "definitions": [
    {
        "part_of_speech": "noun",
        "body": "skilder wearifully uninfolded..."
    },
]
{
  "text": "autumn",
  "pronunciation": "autumn",
  "definitions": [
    {
       "part_of_speech": "verb",
        "body": "intrafissural fernbird kittly..."
    },
]
}

Comme vous le voyez définitions est séparé dans différentes lignes. voici mon code je ne trouve pas mon erreur :


SELECT array_to_json(array_agg(row_to_json(t)  )   )

from (

SELECT lgn_nom AS LigneName, P.id AS PARCOURSID, C.id as courseID, origine_destination,

SELECT array_to_json(array_agg(row_to_json(d)  )   )
FROM (

SELECT ECP.pnt_nom AS StopName,ECP.date AS StopTime, ECP.lat AS Latitude, ECP.lon AS Longitude,nb_in AS PassagersIn, nb_out AS PassagersOut
FROM evt_comptage ECP
WHERE ECP.id_evt_arret = EA.id
) d
) AS evt_comptage

FROM   evt_arret EA, passage_horaire PH, parcours P , ligne L , course C

WHERE PH.id = EA.passage_horaire AND PH.course = C.id AND PH.parcours = P.id AND L.id = P.ligne
) t


Merci d'avance pour votre patience et votre réponse.

Pied de page des forums

Propulsé par FluxBB