以下のコードを見てください。私はうまく機能するこのコードを使用して 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
ありがとう!