Analysieren Sie JSON mit VBA
- JSON-Parsing
- Erste Methode zum Analysieren von JSON mit VBA
- Zweite Methode zum Analysieren von JSON mit VBA
- Dritte Methode zum Analysieren von JSON mit VBA
- Abschluss
JSON (JavaScript Object Notation) ist ein textbasiertes Standardformat, das strukturierte Daten basierend auf der Objektsyntax von JavaScript darstellt. Es wird verwendet, um Daten in webbasierten Anwendungen zu speichern und zu übertragen, z. B. um Daten vom Server an den Client zu senden, die auf einer Webseite angezeigt werden müssen.
Die Syntax für JSON lautet wie folgt:
{ "name": "Alina", "age": 19, "gender": "female", }
Die Daten in JSON werden in Schlüssel-Wert-Paaren gespeichert, die durch Kommas getrennt sind. Jeder Schlüssel wird in Anführungszeichen ("")
geschrieben, und der entsprechende Wert für den Schlüssel folgt nach einem Doppelpunkt.
JSON-Parsing
Bevor das JSON-Parsing besprochen wird, ist es notwendig zu erörtern, was Parsing ist. Das Konvertieren eines Werts von einem Datentyp in einen anderen wird als Parsing bezeichnet; Beispielsweise würde das Konvertieren eines Zeichenfolgenwerts in einen int-Datentyp erfordern, dass der Benutzer den Zeichenfolgenwert analysiert.
Beim JSON-Parsing wird das textbasierte JSON in JavaScript-Objekte konvertiert, die später im Programm verwendet werden können. Die Parsing-Funktion stellt auch sicher, dass die ihr bereitgestellten Daten gültiges JSON sind oder nicht.
Mit VBA können Sie JSON analysieren, ohne externe Bibliotheken zu verwenden. Im Folgenden wurden drei Lösungen besprochen, die es dem Benutzer ermöglichen, JSON einfach zu analysieren.
Erste Methode zum Analysieren von JSON mit VBA
Die erste Methode zum Analysieren von JSON mit Hilfe von VBA lautet wie folgt:
Function DecodingOfJSON (jsonString As Variant)
Set obj = CreateObject("ScriptControl"): obj.Language = "JScript"
Set jsonDecode = obj.Eval("(" + jsonString + ")")
End Function
Sub main()
Set arr = DecodingOfJSON(jsonString )
End Sub
Die Funktion DecodingOfJSON()
nimmt jsonString
als Parameter. Innerhalb der Funktion wird ein Objekt obj
erstellt und der jsonString
ausgewertet.
Das Auswertungsergebnis des jsonString
wird an ein Array arr
zurückgegeben, das alle von JSON ausgewerteten JavaScript-Objekte speichert. Zum Erstellen eines Objekts kann entweder ScriptControl
oder MSScriptControl.ScriptControl
verwendet werden.
Zweite Methode zum Analysieren von JSON mit VBA
Die zweite Methode erstellt ein XMLHTTP-Objekt. Der Clientcomputer verwendet das XMLHTTP-Objekt, um eine beliebige HTTP-Anforderung zu senden und eine Antwort auf die Anforderung zu erhalten.
Das Microsoft XML Document Object Model (DOM) analysiert die Antwort und zeigt sie gemäß den Anforderungen des Benutzers an.
Der Code zum Analysieren von JSON ist unten dargestellt:
Sub parseJSON()
Dim Book As Object
Dim sc As Object
Set sc = CreateObject("MSScriptControl.ScriptControl")
sc.Language = "JScript"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "http://www.omdbapi.com/?t=frozen&y=&plot=short&r=json", False
.send
Set Movie = sc.Eval("(" + .responsetext + ")")
.abort
With Sheets(7)
.Cells(1, 1).Value = Book.Title
.Cells(1, 2).Value = Book.Year
.Cells(1, 3).Value = Book.Rated
.Cells(1, 4).Value = Book.Released
.Cells(1, 5).Value = Book.Writer
End With
End With
End Sub
Der Code erstellt ein ScriptControl
-Objekt, um JSON zu analysieren. Es erhält den JSON von der URL, die in den .Open
-Parametern erwähnt wird.
Die Skriptsprache ist auf JScript
eingestellt, um JSON zu analysieren. Das sc.Eval
parst JSON und weist die resultierenden JavaScript-Objekte dem Book
-Objekt zu.
Die With
-Anweisung ermöglicht es dem Benutzer, Werte der JavaScript-Objekte, die in der Book
-Variablen gespeichert sind, verschiedenen Zellen in Blatt 7 zuzuweisen.
Hinweis: Die Lösung ist ein JScript-Parser anstelle eines JSON-Parsers; Es könnte bösartigen Code im JSON installieren. Mit dem Befehl
ScriptControl.UseSafeSubset = True
kann verhindert werden, dass derJScript
-Parser schädlichen Code in JSON einfügt.
Dritte Methode zum Analysieren von JSON mit VBA
Die dritte Methode deklariert eine Variante
und teilt den Antworttext
im Anführungszeichen-Komma-Anführungszeichen-Format, das jedes Element trennt. Der Wert kann extrahiert werden, indem Sie nach dem gewünschten Angebot suchen.
Wenn Sie beispielsweise das letzte JavaScript-Objekt benötigen, finden Sie das letzte Zitat mit der Funktion InStrRev
. Die Funktion InStrRev
gibt das gesuchte Objekt zurück.
Dim Items As Variant
Dim RequiredStr As Variant
Items = Split(.responsetext, """,""")
RequiredStr = Mid(Items(8), InStrRev(Items(8), """") + 1)
Abschluss
Mit VBA kann der Benutzer JSON analysieren, ohne externe Bibliotheken zu verwenden.
Makros können in Microsoft-Anwendungen erstellt werden, um dieselben Codezeilen wiederholt auf verschiedenen JSON-Dateien auszuführen. Sie müssen nur die richtige Lösung finden, die für Sie funktioniert, und sie in einem Makro speichern, um sie bei Bedarf zu verwenden.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub