Est-Il un Parser JSON pour VB6 / VBA?
Je suis en train de consommer un service web en VB6. Le service dont je contrôle - à l'heure actuelle, de retour d'un SOAP/message XML ou JSON. Je vais avoir un temps vraiment difficile de déterminer si VB6 du SAVON type (version 1) peut gérer un retour object
- par opposition à des types simples comme les string
, int
, etc. Jusqu'à présent, je ne peut pas comprendre ce que je dois faire pour obtenir VB6 à jouer avec des objets retournés.
J'ai donc pensé que je pourrais sérialiser la réponse du service web comme une chaîne JSON. Un parser JSON existent pour VB6?
- J'ai une réponse ci-dessous, mais j'ai maintenant trouvé une meilleure méthode exceldevelopmentplatform.blogspot.com/2018/01/...
Vous devez vous connecter pour publier un commentaire.
Découvrez JSON.org pour une mise à jour de la liste (voir en bas de la page principale) de JSON analyseurs dans de nombreuses langues différentes. Au moment de la rédaction de ce guide, vous trouverez un lien vers deux JSON analyseurs là:
VB-JSON
Le réel syntaxe VB librairie JSON est très simple:
Bâtiment sur ozmike solution, qui n'a pas fonctionné pour moi (Excel 2013 et IE10).
La raison en est que je ne pouvais pas appeler les méthodes exposées objet JSON.
Si ses méthodes sont maintenant exposés à travers les fonctions attachées à un DOMElement.
Ne sais pas c'est possible (ça doit être IDispatch-chose), je vous remercie ozmike.
Comme ozmike a déclaré, pas de 3ème partie libs, à seulement 30 lignes de code.
Le test suivant crée un Objet JavaScript à partir de zéro, alors stringifies il.
Puis il analyse l'objet et itère sur ses touches.
sorties
Je sais que c'est une vieille question, mais ma réponse je l'espère sera d'une grande aide pour les autres qui continuent à venir à cette page après une recherche pour "vba json".
J'ai trouvé ce page pour être très utile. Il dispose de plusieurs compatible avec Excel VBA classes qui gèrent le traitement des données au format JSON.
Mise à JOUR: Trouvé un moyen plus sûr de parsing JSON que l'utilisation d'Eval, ce blog montre les dangers d'une Eval ... http://exceldevelopmentplatform.blogspot.com/2018/01/vba-parse-json-safer-with-jsonparse-and.html
La fin de cette partie, mais désolé les gars, mais de loin le plus simple est d'utiliser Microsoft Script Control. Un exemple de code qui utilise VBA.CallByName de percer dans
J'ai effectivement fait une série de Q&Comme qui explorent JSON/VBA sur des sujets connexes.
T1 Dans Excel VBA sur Windows, comment faire pour atténuer le problème de la syntaxe à point de la traversée de analysée JSON brisé par l'IDE de capitalisation du comportement?
T2 Dans Excel VBA sur Windows, comment faire une boucle par le biais d'un tableau JSON analysée?
T3 Dans Excel VBA sur Windows, comment obtenir stringified JSON respresentation au lieu de “[object object]” pour analysée JSON variables?
T4 Dans Windows Excel VBA,comment obtenir JSON clés pour anticiper un “Run-time error '438': cet Objet ne gère pas cette propriété ou cette méthode”?
Q5 Dans Excel VBA sur Windows, pour analysée JSON variables qu'est-ce que ce JScriptTypeInfo de toute façon?
Ici est un "Natif" VB librairie JSON.
Il est possible d'utiliser JSON qui est déjà dans IE8+. De cette façon, votre ne dépend pas de la troisième partie de la bibliothèque qui sort de la date et n'est pas testée.
voir amédée' version alternative ici
Vous pouvez pont-à-dire.JSON à partir de VB.
Créer une fonction oIE_JSON
Jusqu'vote si vous le trouvez utile
cstr(oJson)
, qui en effet donne [objet JSON]VBA-JSON par Tim Hall, sous licence MIT et sur GitHub. C'est une autre fourche de vba-json qui a émergé à la fin de l'année 2014. Les revendications de travailler sur Mac Office et Windows 32 bits et 64 bits.
VB6 - JsonBag, un Autre Parser JSON/Générateur devrait également être importable en VBA avec peu de difficulté.
Je conseille un .Net composant. Vous pouvez utiliser .Net des composants à partir de VB6 via Interop - voici une tutoriel. Ma conjecture est que .Net les composants seront plus fiables et mieux pris en charge que tout ce qui est produit pour VB6.
Il y a des composants de Microsoft .Net framework comme DataContractJsonSerializer ou JavaScriptSerializer. Vous pouvez également utiliser des bibliothèques tierces comme JSON.NET.
Vous pourriez écrire une Excel-ADN complémentaire dans VB.NET. Excel-l'ADN est une mince bibliothèque qui vous permet d'écrire Xll dans .NET. De cette façon, vous obtenez l'accès à la totalité .NET de l'univers et peut utiliser des trucs comme http://james.newtonking.com/json - un JSON cadre désérialise JSON dans toute classe personnalisée.
Si vous êtes intéressé, voici un article de comment construire un générique Excel JSON client pour Excel à l'aide de VB.NET:
http://optionexplicitvba.com/2014/05/09/developing-a-json-excel-add-in-with-vb-net/
Et voici le lien vers le code: https://github.com/spreadgit/excel-json-client/blob/master/excel-json-client.dna
Json n'est rien, mais les cordes de sorte qu'il peut être facilement manipulé si l'on peut manipuler de la bonne façon, peu importe le degré de complexité de la structure. Je ne pense pas qu'il est nécessaire de faire usage de bibliothèque externe ou un convertisseur pour faire le tour. Voici un exemple où j'ai analysé les données json à l'aide de la manipulation de la chaîne.
Comprendre que c'est un vieux post, mais je suis récemment tombé sur elle tout en ajoutant de la consommation du service web à un vieux VB6 app. La accepté de répondre (VB-JSON) est toujours valide et semble fonctionner. Cependant, j'ai découvert que Chilkat a été mis à jour pour inclure le REPOS et JSON de la fonctionnalité, de faire un one-stop (bien payé) un outil pour moi. Ils ont même, en ligne, un générateur de code qui génère le code pour parser collé les données JSON.
JsonObject lien
Générateur de Code lien
À l'aide de JavaScript fonctions de parsing JSON, sur le dessus de ScriptControl, nous pouvons créer un parser en VBA qui liste chaque et chaque point de données à l'intérieur du JSON. Peu importe la façon imbriquée ou de la complexité de la structure de données est, aussi longtemps que nous fournissons un JSON valide, cette analyse sera de retour d'une structure complète de l'arbre.
JavaScript Eval, getKeys et getProperty méthodes fournissent les blocs de construction pour la validation et de la lecture JSON.
Couplé avec une fonction récursive en VBA, nous pouvons itérer sur toutes les touches (jusqu'à la nième niveau) dans une chaîne JSON. Puis à l'aide d'un contrôle d'Arborescence (employé dans le présent article) ou d'un dictionnaire ou même sur une simple feuille de calcul, nous pouvons organiser les données JSON comme requis.
Plein de Code VBA ici.En utilisant les fonctions JavaScript de parsing JSON, sur le dessus de ScriptControl, nous pouvons créer un parser en VBA qui liste chaque et chaque point de données à l'intérieur du JSON. Peu importe la façon imbriquée ou de la complexité de la structure de données est, aussi longtemps que nous fournissons un JSON valide, cette analyse sera de retour d'une structure complète de l'arbre.
JavaScript Eval, getKeys et getProperty méthodes fournissent les blocs de construction pour la validation et de la lecture JSON.
Couplé avec une fonction récursive en VBA, nous pouvons itérer sur toutes les touches (jusqu'à la nième niveau) dans une chaîne JSON. Puis à l'aide d'un contrôle d'Arborescence (employé dans le présent article) ou d'un dictionnaire ou même sur une simple feuille de calcul, nous pouvons organiser les données JSON comme requis.
Plein de Code VBA ici.
c'est l'exemple de code vb6, testé ok,en fait des œuvres
à partir du dessus de bons exemples, j'ai fait des modifications et a obtenu ce bon résultat
il peut lire les touches {} et les tableaux []
Formule dans une CELLULE EXCEL
AFFICHE: 22.2
AFFICHE: 2222
Outils -> Références -> Microsoft Script Control 1.0; {0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}; C:\Windows\SysWOW64\msscript.ocx