Analizar JSON con VBA

Bilal Shahid 21 junio 2023
  1. Análisis JSON
  2. Primer método para analizar JSON con VBA
  3. Segundo método para analizar JSON con VBA
  4. Tercer método para analizar JSON con VBA
  5. Conclusión
Analizar JSON con VBA

JSON (Notación de objetos de JavaScript) es un formato estándar basado en texto que representa datos estructurados según la sintaxis de objetos de JavaScript. Se utiliza para almacenar y transferir datos en aplicaciones basadas en web, por ejemplo, enviar datos desde el servidor al cliente que debe mostrarse en una página web.

La sintaxis para JSON es la siguiente:

{ "name": "Alina", "age": 19, "gender": "female", }

Los datos en JSON se almacenan en pares de clave y valor, separados por comas. Cada clave está escrita con signos de voz (""), y el valor correspondiente de la clave sigue después de dos puntos.

Análisis JSON

Antes de analizar el análisis de JSON, es necesario analizar qué es el análisis. La conversión de un valor de un tipo de datos a otro se conoce como análisis; por ejemplo, convertir un valor de cadena a un tipo de datos int requeriría que el usuario analizara el valor de cadena.

El análisis de JSON convierte el JSON basado en texto en objetos de JavaScript que se pueden usar en el programa más adelante. La función de análisis también garantiza que los datos proporcionados sean JSON válidos o no.

VBA le permite analizar JSON sin usar bibliotecas externas. A continuación se analizan tres soluciones que permiten al usuario analizar JSON fácilmente.

Primer método para analizar JSON con VBA

El primer método para analizar JSON con la ayuda de VBA es el siguiente:

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

La función DecodingOfJSON() toma jsonString como parámetro. Dentro de la función, se crea un objeto obj y se evalúa jsonString.

El resultado de la evaluación de jsonString se devuelve a una matriz arr, que almacena todos los objetos JavaScript evaluados desde JSON. Se puede utilizar ScriptControl o MSScriptControl.ScriptControl para crear un objeto.

Segundo método para analizar JSON con VBA

El segundo método crea un objeto XMLHTTP. La computadora cliente usa el objeto XMLHTTP para enviar una solicitud HTTP arbitraria y recibir una respuesta de la solicitud.

El modelo de objeto de documento (DOM) XML de Microsoft analiza la respuesta y la muestra de acuerdo con los requisitos del usuario.

El código para analizar JSON se muestra a continuación:

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

El código crea un objeto ScriptControl para analizar JSON. Obtiene el JSON de la URL mencionada en los parámetros .Open.

El lenguaje de secuencias de comandos se establece en JScript para analizar JSON. El sc.Eval analiza JSON y asigna los objetos JavaScript resultantes al objeto Libro.

La declaración Con permite al usuario asignar valores de los objetos de JavaScript almacenados en la variable Libro a diferentes celdas en la hoja 7.

Nota: La solución es un analizador JScript en lugar de un analizador JSON; podría instalar código malicioso en el JSON. El comando ScriptControl.UseSafeSubset = True se puede usar para evitar que el analizador JScript agregue cualquier código malicioso en el JSON.

Tercer método para analizar JSON con VBA

El tercer método declara una Variante y divide el texto de respuesta en el formato cita-coma-comilla que separa cada elemento. El valor se puede extraer buscando la cotización que usted requiere.

Por ejemplo, si necesita el último objeto de JavaScript, busque la última cotización usando la función InStrRev. La función InStrRev devolverá el objeto que estaba buscando.

Dim Items As Variant
Dim RequiredStr As Variant

Items = Split(.responsetext, """,""")
RequiredStr = Mid(Items(8), InStrRev(Items(8), """") + 1)

Conclusión

VBA permite al usuario analizar JSON sin utilizar bibliotecas externas.

Las macros se pueden crear en aplicaciones de Microsoft para ejecutar las mismas líneas de código repetidamente en diferentes JSON. Solo tiene que encontrar la solución adecuada que funcione para usted y almacenarla en una macro para usarla cuando sea necesario.

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