You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA如何处理嵌套JSON数组并获取最后一个元素

解决嵌套JSON数组的解析与元素提取问题

首先,你提供的原始JSON存在语法错误——字符串类型的字段值(比如Ashwin、Male)未用双引号包裹,这是导致解析报错的核心原因之一。先修正为标准JSON格式:

[[{"Name":"Ashwin", "Age":64}], [], [{"Name":"Shakur", "Age":64,"Gender":"Male"}]]

针对解析和提取最后一个元素的需求,提供两种可行方案:

方案一:直接解析嵌套数组定位目标元素

基于你提到的JsonConverter.ParseJson(推测使用VBA-JSON库),直接将整个内容解析为多层数组,通过索引逐层定位目标对象:

Sub GetLastJsonElement()
    Dim jsonStr As String
    Dim outerArr As Object
    Dim innerArr As Object
    Dim targetObj As Object
    
    ' 获取单元格内的标准JSON字符串
    jsonStr = Sheet1.Cells(1, 1).Value
    
    ' 解析为外层数组
    Set outerArr = JsonConverter.ParseJson(jsonStr)
    
    ' 取外层数组最后一个元素(内层数组)
    Set innerArr = outerArr(outerArr.Count)
    
    ' 提取内层数组中的唯一对象
    Set targetObj = innerArr(1)
    
    ' 输出结果示例
    Debug.Print "Name: " & targetObj("Name")
    Debug.Print "Age: " & targetObj("Age")
    Debug.Print "Gender: " & targetObj("Gender")
End Sub

方案二:字符串预处理后解析

如果不想处理多层嵌套,可通过字符串操作直接提取目标片段再解析:

Sub ExtractLastElementByStringProcess()
    Dim rawStr As String
    Dim processedStr As String
    Dim parts As Variant
    Dim jsonObj As Object
    
    rawStr = Sheet1.Cells(1, 1).Value
    ' 先修正字符串未加引号的语法错误
    rawStr = Replace(Replace(rawStr, "Ashwin", """Ashwin"""), "Male", """Male""")
    
    ' 移除首尾方括号
    rawStr = Mid(rawStr, 2, Len(rawStr) - 2)
    ' 按分隔符拆分,取最后一段
    parts = Split(rawStr, "], [")
    processedStr = "[" & parts(UBound(parts)) & "]"
    
    ' 解析并提取对象
    Set jsonObj = JsonConverter.ParseJson(processedStr)(1)
    Debug.Print "Name: " & jsonObj("Name")
End Sub

关键提醒:

  • 所有JSON字符串类型的值必须用双引号包裹,这是JSON的语法强制要求,否则任何解析工具都会报错。
  • 嵌套数组的层级可通过索引直接访问,无需手动拆分数组结构。

内容的提问来源于stack exchange,提问作者Yes_par_row

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:01:04