2017-09-18 229 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