通过VBA-JSON库解析JSON时出错

通过VBA-JSON库解析JSON时出错,json,excel,vba,runtime-error,type-mismatch,Json,Excel,Vba,Runtime Error,Type Mismatch,我收到一封信 运行时错误13类型不匹配 在第行单元格(i,1)处。value=item(“fp”) 不知道为什么无法选择该项目。可以看到json文件的“fp”值为“042018” json的摘录如下所示 { "name": "Flip", "fp": "042018", "filing_typ": "M", "gt": 0, "cur_gt": 0, "b2cs": [ { "csamt": 0, "sply_ty": "INTRA"

我收到一封信

运行时错误13类型不匹配

在第
行单元格(i,1)处。value=item(“fp”)

不知道为什么无法选择该项目。可以看到json文件的“fp”值为“042018”

json的摘录如下所示

{
  "name": "Flip",
  "fp": "042018",
  "filing_typ": "M",
  "gt": 0,
  "cur_gt": 0,
  "b2cs": [
    {
      "csamt": 0,
      "sply_ty": "INTRA"
    },

首先,您显示的JSON是无效的。它以
结尾,但必须是
]}
而不是逗号,才能使其成为一个有效的JSON示例:

{
    "name": "Flip",
    "fp": "042018",
    "filing_typ": "M",
    "gt": 0,
    "cur_gt": 0,
    "b2cs": [{
        "csamt": 0,
        "sply_ty": "INTRA"
    }]
}
代码1:可以与下面的代码一起使用的有效JSON示例

确保只将有效的JSON数据放入解析器。如果您提供的数据无效,解析器将挂起,或者在最好的情况下抛出一个错误

Option Explicit

Public Sub Jsonread()
    Dim FSO As New FileSystemObject
    Dim JsonTS As TextStream
    Set JsonTS = FSO.OpenTextFile("C:\Users\Abd\retoffline_others.json", ForReading)

    Dim jsonText As String
    jsonText = JsonTS.ReadAll
    JsonTS.Close

    Dim jsonObject As Object
    Set jsonObject = JsonConverter.ParseJson(jsonText)

    Debug.Print jsonObject("fp")
    Debug.Print jsonObject("b2cs")(1)("sply_ty")
End Sub
代码2:VBA代码,用于解析代码1中的JSON

说明:

jsonObject(“B2C”)
表示以下内容:

"b2cs": [{
    "csamt": 0,
    "sply_ty": "INTRA"
}]
{
    "csamt": 0,
    "sply_ty": "INTRA"
}
然后
jsonObject(“b2cs”)(1)
将获得
[]
括号中的第一项,它表示以下内容:

"b2cs": [{
    "csamt": 0,
    "sply_ty": "INTRA"
}]
{
    "csamt": 0,
    "sply_ty": "INTRA"
}
最后,
jsonObject(“b2cs”)(1)(“sply_ty”)
是您正在寻找的项目,它将导致:

042018
INTRA

可能
jsonObject
Nothing
在循环中使用它之前请检查:
如果jsonObject是Nothing,那么MsgBox“it is Nothing”:退出Sub
•如果它是Nothing,则表示解析出错或文件未被正确读取。还要检查
jsonText
的值。PEH,我已经检查了JsonObject和jsonText的值。它们都包含值尝试将
项声明为变量
,而不是
对象
。但事实上,我认为它应该起作用ᴇʜ我收到类型不匹配错误。我已据此对问题进行了编辑。请帮帮我是的。。。您的语法需要一个字典…看起来@peh可能已经解决了,所以请尝试运行它。。。。