如何使用VBA-JSON-parser提取JSON中所有层级的name字段值?
提取嵌套JSON中所有
name字段值的实现方案 你可以通过递归遍历解析后的JSON对象来提取所有层级的name字段值,以下是具体实现代码:
1. 递归收集函数
首先添加一个递归过程,用来遍历JSON结构并收集所有name的值:
Sub CollectNameValues(ByVal jsonObj As Variant, ByRef resultCol As Collection) Dim key As Variant Dim item As Variant ' 处理Dictionary类型的JSON对象 If TypeName(jsonObj) = "Dictionary" Then ' 检查当前对象是否包含name字段,有则加入结果集合 If jsonObj.Exists("name") Then resultCol.Add jsonObj("name") End If ' 遍历所有子元素,递归处理 For Each key In jsonObj.Keys CollectNameValues jsonObj(key), resultCol Next key ' 处理数组类型的JSON结构(如果你的JSON包含数组的话) ElseIf IsArray(jsonObj) Then For Each item In jsonObj CollectNameValues item, resultCol Next item End If End Sub
2. 主代码调用
在你已有的代码基础上,调用上面的递归函数并输出结果:
Dim vJson As Object Dim sState As String Dim nameValues As New Collection Dim val As Variant ' 解析JSON(你的原有代码) JSON.Parse response, vJson, sState ' 调用递归函数收集所有name值 CollectNameValues vJson, nameValues ' 遍历输出结果(可根据需求替换为其他处理逻辑) For Each val In nameValues Debug.Print val Next val
代码说明
- 递归函数会自动处理任意层级的嵌套对象,不管
name在根层级还是深层子对象中都能被捕获 - 如果你的JSON包含数组结构,代码也能自动遍历数组元素,提取其中的
name值 - 结果会被存储在
Collection中,你可以根据需要将其转换为数组或进行其他业务处理
内容的提问来源于stack exchange,提问作者Snake Eyes
相关产品推荐
相关产品推荐

