bonjour a tous

la question ayant été posé aujourd'hui et travaillant en string habituellement j'ai decidé de me mettre un peu a exploiter le scriptcontrol
voila je voudrais diséquer un fichier JSON
(alors oui il y a des sources partout sur le net mais il manque un e peu de pédagogie dans ces exemples bref je patoge


voila ce que j'ai réussi a comprendre jusque la :ce qu'il me manque c'est l'exploitation de l'arrays des keys

si quelqu'un a des exemples avec explication je suis preneur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub decodejson()
    Dim sc As Object, obj As Variant
 'ouverture du fichier
    Dim laChaine As String, x, fichier As String
    fichier = "C:\Users\polux\Downloads\objective_names.json"
    x = FreeFile
    Open fichier For Input As #x
    laChaine = Input(LOF(x), #x)
    Close #x
 
'partie scriptcontrol en javascript
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
     sc.AddCode "function getProperty(jsonObj, propertyName) { return jsonObj[propertyName]; } "
    sc.AddCode "function getKeys(jsonObj) { var keys = new Array(); for (var i in jsonObj) { keys.push(i); } return keys; } "
 
'exploitation
Set tabl = sc.Eval("(" + laChaine + ")")'on exécute la commande native javascript "eval" sans passer par une fonction 
 
   Set Keys = sc.Run("getKeys", tabl)
  ' je voudrais lister mes élément ici avec leur id et leur Name dans une boucle
End Sub
un exemple de json raccourci en longueur mais valide
[{"id":"1099-99","name":"Laboratoire de Hamm"},{"id":"1143-99","name":"Laboratoire de Zakk"},{"id":"1102-99","name":"Laboratoire de Lesh"},{"id":"1099-100","name":"Ferme Bauer"},{"id":"1143-100","name":"Ferme Gee"},{"id":"1102-100","name":"Ferme Barrett"},{"id":"1099-101","name":"Campement de McLain"},{"id":"1143-101","name":"Campement d'Habib"},{"id":"1102-101","name":"Campement de Patrick"},{"id":"1099-102","name":"Académie de O'del"},{"id":"1143-102","name":"Académie de Kay'li"},{"id":"1102-102","name":"Académie de Y'lan"},{"id":"1099-104","name":"Nécropole éternelle"},{"id":"1143-104","name":"Nécropole impérissable"},{"id":"1102-104","name":"Nécropole immortelle"},{"id":"1099-105","name":"Dépôt Vilebrequin"},{"id":"1143-105","name":"Dépôt Engrenage"},{"id":"1102-105","name":"Dépôt Bougie"},{"id":"1099-106","name":"Crypte embrasée"},{"id":"1143-106","name":"Crypte torride"},{"id":"1102-106","name":"Crypte cuisante"},{"id":"1099-107","name":"- Frontière"},{"id":"1143-107","name":"- Frontière"},{"id":"1102-107","name":"- Frontière"},{"id":"1099-108","name":"- Frontière"},{"id":"1143-108","name":"- Frontière"},{"id":"1102-108","name":"- Frontière"},{"id":"1099-109","name":"Refuge de Roy"},{"id":"1143-109","name":"Refuge d'Olivier"},{"id":"1102-109","name":"Refuge de Norfolk"},{"id":"1099-110","name":"Avant-poste dévasté"},{"id":"1143-110","name":"Avant-poste délabré"},{"id":"1102-110","name":"Avant-poste ravagé"},{"id":"1099-113","name":"Rempart stoïque"},{"id":"1143-113","name":"Rempart durci"},{"id":"1102-113","name":"Rempart impassible"},{"id":"1099-114","name":"Palais du balbuzard"},{"id":"1143-114","name":"Palais de la pie-grièche"},{"id":"1102-114","name":"Palais du circaète"},{"id":"1099-115","name":"Antre de Boettiger"},{"id":"1143-115","name":"Antre de Berdrow"},{"id":"1102-115","name":"Antre de Hughe"},{"id":"1099-116","name":"Puits du Souffle-poussière"},{"id":"1143-116","name":"Puits du Dernier-soupir"},{"id":"1102-116","name":"Puits du Rêve-brisé"},{"id":"1099-117","name":"- Citadelle"},{"id":"1143-117","name":"- Citadelle"},{"id":"1102-117","name":"- Citadelle"},{"id":"94-62","name":"Temple des prières perdues"}]

merci pour les retours