Visual Basic for Applications:
Työskentely JSON:n kanssa

Kuinka:

VBA ei natiivisti tue JSONin jäsentämistä tai tuottamista, joten käytämme skriptikieltä, kuten JScriptiä (ScriptControl-objektin kautta) JSON-merkkijonojen jäsentämiseen ja JSON-objektien rakentamiseen. Näin voit jäsentää JSON-merkkijonon VBA:ssa:

Function ParseJSON(ByVal jsonString As String) As Object
    Dim scriptControl As Object
    Set scriptControl = CreateObject("MSScriptControl.ScriptControl")
    scriptControl.Language = "JScript"
    
    scriptControl.Eval "var obj = (" & jsonString & ")"
    Set ParseJSON = scriptControl.CodeObject.obj
End Function

Sub DemoParseJSON()
    Dim jsonString As String
    jsonString = "{""name"":""John"", ""age"":30, ""city"":""New York""}"
    
    Dim parsed As Object
    Set parsed = ParseJSON(jsonString)
    
    MsgBox "Nimi: " & parsed.name & ", Ikä: " & parsed.age & ", Kaupunki: " & parsed.city
End Sub

JSONin tuottamiseen voisit käyttää samankaltaista lähestymistapaa, rakentaen JSON-merkkijonon yhdistelemällä:

Function GenerateJSON(name As String, age As Integer, city As String) As String
    GenerateJSON = "{""name"":""" & name & """, ""age"":" & age & ", ""city"":""" & city & """}"
End Function

Sub DemoGenerateJSON()
    Dim jsonString As String
    jsonString = GenerateJSON("Jane", 28, "Los Angeles")
    
    MsgBox jsonString
End Sub

Syväsukellus

Esitetyt lähestymistavat hyödyntävät ScriptControlia JSONin käsittelyyn, käytännössä ulkoistaen työn JavaScript-moottorille. Tämä on luova kiertotapa, mutta ei välttämättä tehokkain tai modernein tapa työskennellä JSONin kanssa VBA-kontekstissa. Monimutkaisemmissa sovelluksissa tämä menetelmä saattaa muodostua hankalaksi ja tuoda mukanaan suorituskyvyn heikkenemistä tai turvallisuushuolia, koska ScriptControl suorittaa ympäristössä, jolla on täysi pääsy isäntätietokoneeseen.

Muut ohjelmointiympäristöt, kuten Python tai JavaScript, tarjoavat sisäänrakennetun tuen JSONille, tehdessään niistä sopivampia sovelluksille, jotka vaativat laajaa JSON-muokkausta. Nämä kielet tarjoavat kattavia kirjastoja, jotka helpottavat paitsi jäsentämistä ja tuottamista, myös JSON-datankyselyä ja -muotoilua.

Huolimatta näistä rajoituksista VBA:ssa, JSONin käsittelyn ymmärtäminen on tärkeää maailmassa, jossa web-pohjainen datanvaihto ja konfiguraatiotiedostot ovat pääosin JSON-muodossa. VBA-ohjelmoijille näiden tekniikoiden hallitseminen avaa mahdollisuuksia integroitumiseen web-APIihin, konfiguraatiotiedostojen tulkintaan tai jopa yksinkertaisten web-sovellusten rakentamiseen. Kuitenkin, kun projektit kasvavat monimutkaisuudessa tai vaativat suorituskykyä, kehittäjät saattavat harkita JSON-ystävällisempien ohjelmointiympäristöjen hyödyntämistä.