Analysieren Sie JSON mit VBA

Bilal Shahid 21 Juni 2023
  1. JSON-Parsing
  2. Erste Methode zum Analysieren von JSON mit VBA
  3. Zweite Methode zum Analysieren von JSON mit VBA
  4. Dritte Methode zum Analysieren von JSON mit VBA
  5. Abschluss
Analysieren Sie JSON mit VBA

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 der JScript-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.

Bilal Shahid avatar Bilal Shahid avatar

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