Page 1 sur 1

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

Posté : lun. 18 mars 2019, 08:33:57
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?

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

Posté : mar. 20 oct. 2020, 15:16:19
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

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

Posté : mar. 20 oct. 2020, 15:42:35
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]}

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

Posté : mar. 20 oct. 2020, 16:25:26
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

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

Posté : jeu. 22 oct. 2020, 07:31:43
par fcarton
Merci de l'info....