这是我在parseJson
中用来调用vba
的代码,在我有JSON
个对象的情况下,我收到的error 10001
与预计Json-vba library 2.2.3
或"{"
时的最新"["
。
Sub jsontest()
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
'http.Open "GET", "https://bin.codingislove.com/document/ayequrimiy", False
http.Open "GET", "https://bin.codingislove.com/ayequrimiy.json", False
http.send
MsgBox (ParseJson(http.responseText)("Count"))
End Sub
第二个.json
文件显示10001 error
,但第一个文件显示文本形式的相同文件正在执行。我在调用json
字符串时没有成功,也尝试使用括号。
我的解析器调用应该纠正什么?
答案 0 :(得分:1)
由于这不是JSON响应,因此您必须先将其设为一个,然后才能解析它。最简单的方法是加载页面的DOM,然后提取文本。
SO上有很多片段(here's one)就可以做到这一点。 获得DOM后,请执行以下操作:
json = doc.getElementById("box").innerText
答案 1 :(得分:1)
使用开发者工具调用您的第二个网址https://bin.codingislove.com/ukiyerovow.json
,可以看到json
从网址https://bin.codingislove.com/documents/ukiyerovow
返回,如下所示:
{
"data":
"{
\"Count\":1,
\"results\":
[
{
\"showEmailIcon\":true,
\"showIcon\":true,
\"middleName\":\"\",
\"dateActivated\":1513000,
\"regAffiliateRebate\":\"No Rebate(0)\",
\"Id\":1,
\"dateLastLogin\":1513248842000,
\"countryName\":\"France\",
\"address\":null,
\"name\":\"cien\",
\"id\":1786511,
\"state\":null
}
],
\"resultClass\":\"com.zoho.dao.dto\"
}",
"key":"ayequrimiy"
}
使用Json-vba library
这个strign可以像这样解析。 HTH
Sub jsontest()
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
' use this url instaed:
Const url As String = "https://bin.codingislove.com/documents/ayequrimiy"
http.Open "GET", url, False
http.send
Dim parsedJson As Dictionary
Set parsedJson = JsonConverter.ParseJson(http.responseText)
Dim data As String
data = parsedJson("data")
Dim parsedData As Dictionary
Set parsedData = ParseJson(data)
MsgBox parsedData("Count")
End Sub
我的解析器调用应该纠正什么?
https://bin.codingislove.com/documents/ayequrimiy
。有json
数据。比较
获得例如
Name
你必须使用包含数组的results
,所以首先使用索引指向数组的元素,例如(1)
然后获取元素("Name")
:
Debug.Print parsedData("reports")(1)("Name")