JsonConverter的问题

时间:2018-01-30 12:43:40

标签: json vba parsing

这是我在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字符串时没有成功,也尝试使用括号。

我的解析器调用应该纠正什么?

2 个答案:

答案 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")