2

请看下面的代码。我正在使用这段代码读取 JSON ,效果很好,但是,我现在正试图将结果数组转储到列/行中。我返回的一些 JSON 值中包含数组(“cat_list”下方的示例)。

我无法理解以下代码中的原因:

MsgBox "ITEM VALUE... " & p("data")(Row)(Col_Data)(1) 

显示值“20”(这对于下面的 JSON 输入是正确的),但代码片段:

If IsArray(p("data")(Row)(Col_Data)) Then  

解析为 FALSE,然后导致代码的 ELSE 部分失败。为什么 IsArray 不起作用?

我的 JSON 输入如下所示:

{... "layout_file":"category.html","cat_list":[20, 30, 25], ...}

代码片段:

Row = 1

For Each Item In p("data")
    Col = 1

    For Each Col_Data In p("data")(Row)

        If Col_Data = "cat_list" Then
            MsgBox "ITEM VALUE... " & p("data")(Row)(Col_Data)(1)   <-- SUCCESSFULLY PRINTS SUB-ARRAY VALUE "20"
        End If

        If IsArray(p("data")(Row)(Col_Data)) Then   <-- FAILS TO DETECT SUB-ARRAY
            Cells(Row + 1, Col) = "["

            For Each SubArrayData In p("data")(Row)(Col_Data)(SubArray)
                Cells(Row + 1, Col) = Cells(Row + 1, Col) & ", " & p("data")(Row)(Col_Data)(SubArray)
            Next SubArrayData

            Cells(Row + 1, Col) = Cells(Row + 1, Col) & "]"
        Else
            Cells(Row + 1, Col) = p("data")(Row)(Col_Data)   <-- CODE FAILS HERE ONLY WHEN ITEM CONTAINS ARRAY, BUT SUCCESSFULLY PRINTS VALUE "20" IN MSG BOX ABOVE
        End If

        Col = Col + 1
    Next Col_Data

    Row = Row + 1
Next Item

谢谢!

4

1 回答 1

2

使用该IsArray()函数检查变量是否为数组。

在此处输入图像描述

示例代码

Sub testArray()

Dim i() As Integer
Dim j As Integer


MsgBox IsArray(i)
MsgBox IsArray(j)

End Sub
于 2013-10-10T03:14:02.393 回答