0
votes

Comment transformer un tableau JSON en rangées dans PostgreSQL

J'essaie de convertir ce résultat dans lequel j'ai une colonne de type JSON, qui provient d'une requête SQL xxx

à ceci xxx < P> J'utilise PostgreSQL


4 commentaires

Avez-vous consulté les fonctions JSON à Postgres?


" qui vient d'une requête SQL " - pouvez-vous modifier cette requête? Si oui, veuillez le poster - semble assez inutile pour créer un JSON uniquement pour la déstructurier à nouveau.


Le JSON renvoyé de la requête provient d'un champ généré par un plugin JIRA dont le résultat est toujours au format JSON, ce n'est pas que je suis retourné JSON


Ah Ok, alors ça va probablement bien. BTW, s'il vous plaît considérer upvoting et / ou accepter les réponses que vous avez trouvées utiles


3 Réponses :


0
votes

json_to_record et json_to_recordsetset de Fonctions de traitement JSON faire exactement cela. Dans votre cas: xxx

Démo en ligne


0 commentaires

0
votes
SELECT r."Nombre",
       r."rutaEsquema",
       r."TipoDeComponente",
       r."detalleDelComponente"
FROM jsonb_to_recordset(/* your JSONB value */ -> 'rows') AS q(columns jsonb)
   CROSS JOIN LATERAL
      jsonb_to_record(columns)
         AS r(jseq bigint,
              "Nombre" text,
              "rutaEsquema" text,
              "TipoDeComponente" text,
              value bigint,
              "detalleDelComponente" text
             );

0 commentaires

0
votes

Une option utiliserait json_ach code> fonction pour développer l'objet JSON le plus externe dans un ensemble de paires de touches / valeur, puis d'extraire des éléments de tableau en utilisant json_array_elements code>:

select elm->>'Nombre' as Nombre,
       elm->>'rutaEsquema' as rutaEsquema,
       elm->>'TipoDeComponente' as TipoDeComponente,
       elm->>'detalleDelComponente' as detalleDelComponente
  from
  (
   select elms -> 'columns' as elm 
     from(
          select json_array_elements(js.value) as elms
            from tab,
                 json_each(js_col) as js
         ) q1
  ) q2 


1 commentaires

Vous pouvez simplifier cette requête imbriquée à SELECT JSON_ARRAY_ELS (JS_COL -> 'Rows') -> 'Colonnes' comme elm de l'onglet