首页 > VB > VBA/VB6解析JSON数据包(JS脚本法)

VBA/VB6解析JSON数据包(JS脚本法)

VB 2023-06-29

先用json与VB对象做个对比吧,方便解释;在json中花括号{}括起来的我们可以理解成VB中字典对象,中括号[]括起来的我们可以把它理解VB中数组对象;

先上json对象解析代码

Public Function JsonObjToVbObject(sjson As String) As Object
    On Error GoTo er:
    Dim jsonobj As Object
    With CreateObject("msscriptcontrol.scriptcontrol")
        .Language = "JavaScript"
        .addcode "var jsonobj=" & sjson
        Set jsonobj = .codeobject
    End With
    Set JsonObjToVbObject = jsonobj
    Exit Function
er:
    Set JsonObjToVbObject = Nothing
End Function

使用实列

Sub test1()
    
    Dim SJS As String: SJS = "{'状态':0,'信息':'查询成功','结果':[{'姓名':'张三','年龄':18,'身高':165,'体重':'66KG','爱好':'打球,瞟美女'},{'姓名':'李四','年龄':20,'身高':175,'体重':'70KG','爱好':'瞟美女','喜欢的美女':[{'姓名':'玲玲','身高':165,'体重':'48KG'},{'姓名':'婷婷','身高':170,'体重':'45KG'}]},{'姓名':'王五','年龄':22,'身高':185,'体重':'60KG','爱好':'看隔壁美女','喜欢美女类型':['御姐','萝莉','少妇']}]}"
    
    Set VBOBJ = JsonObjToVbObject(SJS) 
   
End Sub
 

下面我们来尝试取,第一层里面的“信息”的值,只需要以下操作即可

Debug.Print VBOBJ.jsonobj.信息
 

下面我们来单独取,“结果”中,“李四”的“爱好”,这里用到了“CallByName”,因为JScriptTypeInfo对象不予许直接点属性

 Set 结果集 = VBOBJ.jsonobj.结果
 Set 李四 = CallByName(结果集, "1", VbGet)
 Debug.Print 李四.爱好
 

下面再看看怎么取出李四喜欢的美女的信息

    Set 结果集 = VBOBJ.jsonobj.结果
    Set 李四 = CallByName(结果集, "1", VbGet)
    For Each 李四喜欢的美女 In 李四.喜欢的美女
        Debug.Print 李四喜欢的美女.姓名
        Debug.Print 李四喜欢的美女.身高
    Next
 

取相同王五兄弟的喜欢的美女类型与上面的方法一样

    Set 结果集 = VBOBJ.jsonobj.结果
    Set 王五兄弟 = CallByName(结果集, "2", VbGet)
    For Each 美女类型 In 王五兄弟.喜欢美女类型
        Debug.Print 美女类型
    Next
 

3.5.4.那么直接取出这几位兄弟的所有信息怎么操作呢?

    For Each 信息 In 结果集 ''取字典类型
        Debug.Print 信息.姓名
        Debug.Print 信息.年龄
        Debug.Print 信息.身高
        Debug.Print 信息.体重
        Debug.Print 信息.爱好
        If 信息.姓名 = "李四" Then ''取字典类型
            For Each 李四 In 信息.喜欢的美女
                Debug.Print "    李四喜欢的美女:" & 李四.姓名
                Debug.Print "    李四喜欢的美女:" & 李四.身高
            Next
        ElseIf 信息.姓名 = "王五" Then '去数组类型
            For Each 王五 In 信息.喜欢美女类型
                Debug.Print "    王五喜欢的美女类型:" & 王五
            Next
        End If
    Next
 

上一篇:没有了