2017-09-18 196 views
1

在VBA中,我使用以下JSON转换器https://github.com/VBA-tools/VBA-JSON解析简单的JSON响应。从上一个JSON对象获取值

但是,我有一个JSON响应,有多个对象,我希望我的代码总是在最后(即更新)的对象中取值。

这里是我的JSON:

[ 
    { 
    "masterDataID": 26941, 
    "testRunID": 66929 
    }, 
    { 
    "masterDataID": 26941, 
    "testRunID": 67485 
    }, 
    { 
    "masterDataID": 26941, 
    "testRunID": 67926 
    } 
] 

正如你所看到的,没有明显的名称的对象,所以我不得不用数字来指定他们。

这里是我的代码:

Public Sub GETID() 

Dim http As Object, JSON As Object, i As Integer 
Dim URL As String 

URL = Range("B3") 

Set http = CreateObject("MSXML2.XMLHTTP") 
http.Open "GET", URL, False 
http.send 
Set JSON = ParseJson(http.responseText) 

ID = JSON(1)("testRunID") 

Range("B4") = ID 

End Sub 

ID = JSON(1)("testRunID") 

JSON(1)得到我的第一个对象(即ID = 66929)。但是我希望得到的最后一个对象,无论有多少物体(可能是通过计算物体的数量和做+1)...恐怕我对VBA的了解是非常基本的:s

非常感谢您提前!

+0

我实际上在某处看到了这个答案,但认为它太简单了,哈哈,谢谢! –

回答

1

这里您JSON对象是字典的集合(每个字典表示源JSON数组中的某个元素对象)

收藏有Count属性,因此这会给你想要的东西:

ID = JSON(JSON.Count)("testRunID") 
+0

那么索引和计数都是以1为基础的?标准VBA词典具有从零开始的索引和基于一次的计数(不进行修改)。 – Jeeped

+0

收藏不是字典 –

+0

啊,是的。谢谢你清理那个。 – Jeeped