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 に答える