Parsing Json lorsqu'il n'y a pas de nom de tableau...

RPG (3 et 4, free), CL, SQL, etc...
Répondre
bme
Messages : 1
Enregistré le : ven. 15 mars 2019, 08:19:46

Parsing Json lorsqu'il n'y a pas de nom de tableau...

Message par bme »

Bonjour à tous,
Pour résumer: nous disposons dans mon entreprise de la version V7.3 TR4. Avec les nouveaux opérateurs SQL/JSON, c'est assez facile de parser un Json contenant des tableaux. Par exemple, avec le Json suivant:

{"data":[{"id":"_1001"},{"id":"_1002"},{"id":"_1003"},{"id":"_1004"}]}

On peut utiliser :
SELECT Y.* FROM JSON_TABLE(
'{"data":[{"id":"_1001"},{"id":"_1002"},{"id":"_1003"},{"id":"_1004"}]}'
,'lax $' COLUMNS(
NESTED PATH 'lax $.data[*]' COLUMNS (ID VARCHAR(50) PATH '$.id' ))) as y;

Et on obtient :
_1001
_1002
_1003
...

Mon problème est que le JSON que je dois consommer en input n'a pas de nom de tableau:
{[
{"id":"_1001"},
{"id":"_1002"},
{"id":"_1003"},
{"id":"_1004"}
]}

Et je n'ai pas encore trouvé la bonne syntaxe pour parser ce type de Json…
La solution que j'utilise actuellement consiste à ajouter un nom de tableau à l'aide d'un concat:

SELECT Y.* FROM JSON_TABLE(
'{"data":'
concat Substr('{[{"id":"_1001"},{"id":"_1002"},{"id":"_1003"},{"id":"_1004"}]}', 2)
,'$.data[*]' Columns(Number VarChar(10) path '$.id')) AS Y;

Mais j'aimerais savoir si l'un d'entre vous a une meilleure solution?
Cordialement
Bertrand Menetrier
Division Solutions Assurance & BI
Vaudoise Assurances

fcarton
Messages : 9
Enregistré le : mar. 20 oct. 2020, 09:28:56

Re: Parsing Json lorsqu'il n'y a pas de nom de tableau...

Message par fcarton »

Bonjour,

Nous avons le même soucis, mais aucune solution trouvée effectivement. Le JSON semble devoir être formaté correctement.

Je remonte ce sujet car si une solution existe je suis preneur. :D

nbonnet
Messages : 198
Enregistré le : mar. 11 sept. 2018, 08:20:13
Localisation : Lyon

Re: Parsing Json lorsqu'il n'y a pas de nom de tableau...

Message par nbonnet »

Bonjour,

Si je comprends bien la doc, un tableau dans un objet ne peut être anonyme : https://www.json.org/json-en.html

Par contre un flux JSON peut être un tableau !

Valide :
[1, 2, 3]
{"tableau":[1, 2, 3]}

Invalide :
{[1, 2, 3]}
Nathanaël

cmasse
Site Admin
Messages : 813
Enregistré le : mer. 14 févr. 2007, 18:00:03
Localisation : Nantes
Contact :

Re: Parsing Json lorsqu'il n'y a pas de nom de tableau...

Message par cmasse »

Bonjour,

Scott Forstie donnait une astuce : https://gist.github.com/forstie/b45fd2c ... 2d63f9f628

et c'est intégré dans la TR2/TR8, voir https://www.volubis.fr/Pausecaf/PAUSECAF84.html
Christian Massé (Volubis.fr)

fcarton
Messages : 9
Enregistré le : mar. 20 oct. 2020, 09:28:56

Re: Parsing Json lorsqu'il n'y a pas de nom de tableau...

Message par fcarton »

Merci de l'info....

Répondre