预先感谢您的协助。
我正在使用JSON VB6解析器,该解析器位于:VB JSON Parser
我有以下JSON响应(来自BLS网站,特别是此链接Here:
{“状态”:“ REQUEST_SUCCEEDED”,“响应时间”:71,“消息”:[],“结果”:{
“系列”:
[{“ seriesID”:“ WPS012”,“ data”:[{“ year”:“ 2014”,“ period”:“ M11”,“ periodName”:“ 11月”,“ value”:“ 153.6”,“脚注“:[{” code“:” P“,” text“:”初步。所有索引均应在原始发布后的四个月内进行修订。“}]},{” year“:” 2014“,” period“:” M10“,” periodName“:”十月“,” value“:” 147.4“,”脚注“:[{” code“:” P“,” text“:”初步。所有索引均应在原始版本之后四个月进行修订Publication。“}]},{” year“:” 2014“,” period“:” M09“,” periodName“:” September“,” value“:” 146.5“,” footnotes“:[{” code“: “ P”,“ text”:“初步。所有索引都会在原始出版物发布后四个月进行修订。”}]},{“ year”:“ 2014”,“ period”:“ M08”,“ periodName”:“ August“,” value“:” 156.9“,” footnotes“:[{” code“:” P“,” text“:”初稿。所有索引均应在原始出版后的四个月内进行修订。“}]},{ “ year”:“ 2014”,“ period”:“ M07”,“ periodName”:“ July”,“ value”:“ 156.4”,“脚注”:[{}]},{“ year”:“ 2014” ,“ period”:“ M06”,“ periodName”:“ June”,“ value”:“ 179.6”,“ footnotes”:[{}]},{“ year”:“ 2014”,“ peri od“:” M05“,” periodName“:
“ May”,“ value”:“ 205.4”,“ footnotes”:[{}]},{“ year”:“ 2014”,“ period”:“ M04”,“ periodName”:“ April”,“ value” :“ 201.6”,“脚注”:[{}]},{“ year”:“ 2014”,“句号”:“ M03”,“ periodName”:“三月”,“值”:“ 188.1”,“脚注“:[{{}]},{” year“:” 2014“,” period“:” M02“,” periodName“:” February“,” value“:” 180.2“,” footnotes“:[{}]} ,{“ year”:“ 2014”,“ period”:“ M01”,“ periodName”:“一月”,“ value”:“ 177.8”,“脚注”:[{}]},{“ year”:“ 2013”,“句号”:“ M12”,“ periodName”:“ December”,“ value”:“ 183.2”,“ footnotes”:[{}]},{“ year”:“ 2013”,“ period”: “ M11”,“ periodName”:“十一月”,“值”:“ 180.4”,“脚注”:[{}]},{“ year”:“ 2013”,“ period”:“ M10”,“ periodName” :“十月”,“值”:“ 186.4”,“脚注”:[{}]},{“年”:“ 2013”,“句号”:“ M09”,“ periodName”:“九月”,“值“:” 197.1“,”脚注“:[{}]},{” year“:” 2013“,” period“:” M08“,” periodName“:” August“,” value“:” 222.2“,” footnotes“:[{}]},{” year“:” 2013“,” period“:” M07“,” periodName“:” July“,” value“:” 252.9“,” footnotes“:[{}] },{“ year”:“ 2013”,“ period”:“ M06”,“ periodName”:“ June”,“ value”:“ 259.0”,“ footnotes”:[{}]},{“ year”: ” 2013“,”句号“:” M05“,” p
eriodName“:”五月“,” value“:” 263.7“,”脚注“:[{}]},{” year“:” 2013“,” period“:” M04“,” periodName“:” April“, “ value”:“ 249.3”,“脚注”:[{}]},{“ year”:“ 2013”,“ period”:“ M03”,“ periodName”:“ March”,“ value”:“ 268.1” ,“ footnotes”:[{}]},{“ year”:“ 2013”,“ period”:“ M02”,“ periodName”:“ February”,“ value”:“ 267.1”,“ footnotes”:[{ }]},{“ year”:“ 2013”,“ period”:“ M01”,“ periodName”:“ January”,“ value”:“ 279.7”,“ footnotes”:[{}]},{“ year “:” 2012“,”句号“:” M12“,” periodName“:”十二月“,”值“:” 283.2“,”脚注“:[{}]},{” year“:” 2012“,” period“:” M11“,” periodName“:” 11月“,” value“:” 280.8“,”脚注“:[{}]},{” year“:” 2012“,” period“:” M10“, “ periodName”:“十月”,“ value”:“ 286.7”,“脚注”:[{}]},{“ year”:“ 2012”,“ period”:“ M09”,“ periodName”:“ September” ,“ value”:“ 285.2”,“脚注”:[{}]},{“ year”:“ 2012”,“ period”:“ M08”,“ periodName”:“ August”,“ value”:“ 298.9 “,” footnotes“:[{}]},{” year“:” 2012“,” period“:” M07“,” periodName“:” July“,” value“:” 275.8“,” footnotes“:[ {}]},{“ year”:“ 2012”,“ period”:“ M06”,“ periodName”:“ June”,“ value”:“ 226.9”,“ footnotes”:[{}] },{“ year”:“ 2012”,“ perio
d“:” M05“,” periodName“:” May“,” value“:” 233.7“,”脚注“:[{}]},{” year“:” 2012“,” period“:” M04“, “ periodName”:“ April”,“ value”:“ 239.9”,“脚注”:[{}]},{“ year”:“ 2012”,“ period”:“ M03”,“ periodName”:“ March” ,“值”:“ 243.6”,“脚注”:[{}]},{“年”:“ 2012”,“句号”:“ M02”,“句号名称”:“二月”,“值”:“ 239.9” “,” footnotes“:[{}]},{” year“:” 2012“,” period“:” M01“,” periodName“:” January“,” value“:” 243.8“,” footnotes“:[ {}]}]}]
}}`
我能够使用解析器返回“状态”,“ responseTime”和“消息”。除此之外(第二个花括号的开头),我什么也没得到。
以下是我尝试使用的代码:
Dim p As Object
Set p = JSON.parse(gbl_response)
'Print the text of a nested property '
Debug.Print p.Item("responseTime")
'Print the text of a property within an array '
Debug.Print p.Item("Results").Item("series").Item("seriesID")
p.Item(“ responseTime”)的打印工作并返回“ 71”,但是在第二次打印尝试时出现“无效的调用过程或参数”错误。
对于我的一生,我四处搜寻,但未找到任何解决方案。我尝试了this,它似乎几乎是相同的,但是,a,我尝试在此处复制解决方案,但似乎没有用。
谢谢您的协助!
最佳答案
Public Const jsonSource As String = "{" & _
"""status"": ""REQUEST_SUCCEEDED"", " & _
"""responseTime"": 71, " & _
"""message"": [ " & _
"], " & _
"""Results"": { " & _
"""series"": [ " & _
"{ " & _
"""seriesID"": ""WPS012"", " & _
"""data"": [ " & _
"{ " & _
"""year"": ""2014"", " & _
"""period"": ""M11"", " & _
"""periodName"": ""November"", " & _
"""value"": ""153.6"", " & _
"""footnotes"": [ " & _
"{ " & _
"""code"": ""P"", " & _
"""text"": ""Preliminary. All indexes are subject to revision four months after original publication."" " & _
"} " & _
"] " & _
"} " & _
"] " & _
"}]}}"
Sub JsonTest()
Dim jsonData As Scripting.Dictionary
Set jsonData = JSON.parse(jsonSource)
Dim responseTime As String
responseTime = jsonData("responseTime")
Dim results As Scripting.Dictionary
Set results = jsonData("Results")
Dim series As Collection
Set series = results("series")
Dim seriesItem As Scripting.Dictionary
For Each seriesItem In series
Dim seriesId As String
seriesId = seriesItem("seriesID")
Debug.Print seriesId
Dim data As Collection
Set data = seriesItem("data")
Dim dataItem As Scripting.Dictionary
For Each dataItem In data
Dim year As String
year = dataItem("year")
Dim period As String
period = dataItem("period")
Dim periodName As String
periodName = dataItem("periodName")
Dim value As String
value = dataItem("value")
Dim footnotes As Collection
Set footnotes = dataItem("footnotes")
Dim footnotesItem As Scripting.Dictionary
For Each footnotesItem In footnotes
Dim code As String
code = footnotesItem("code")
Dim text As String
text = footnotesItem("text")
Next footnotesItem
Next dataItem
Next seriesItem
End Sub