通过VBA-JSON库解析JSON时出错
我收到一封信 运行时错误13类型不匹配 在第通过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"
行单元格(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可能已经解决了,所以请尝试运行它。。。。