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

#1 17/06/2016 11:12:56

YoussefDu16
Membre

Conversion requête en json

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.

Hors ligne

#2 06/07/2016 08:40:15

PmGs7
Membre

Re : Conversion requête en json

Il ne semble pas y avoir d'erreur dans la requête mais le résultat dépend aussi de la structure et du contenu des tables ...

Hors ligne

#3 06/07/2016 12:35:43

Marc Cousin
Membre

Re : Conversion requête en json

À mon avis, vu ce que vous voulez faire, il vous faut un array_agg en plus: à l'heure actuelle, vous avez 3 records qui se suivent, chacun en json. Ce que vous voulez, c'est produire un tableau (avec le array_agg) et convertir ce tableau en json…


Marc.

Hors ligne

Pied de page des forums