2017-09-18 1 views
1

VBA에서 다음 JSON 변환기 https://github.com/VBA-tools/VBA-JSON을 사용하여 간단한 JSON 응답을 구문 분석합니다.마지막 JSON 개체에서 값 가져 오기

그러나 여러 객체가있는 JSON 응답이 있으며 코드에서 항상 마지막 (즉, 최신) 객체의 값을 가져오고 싶습니다.

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

당신이 볼 수 있듯이, 객체에 대한 명백한 이름이 없다, 그래서 나는 그들을 지정 번호를 사용하도록 강요하고 있습니다 :

여기 내 JSON이다. 여기

내 코드입니다 :

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 사전에는 0부터 시작하는 인덱스와 1에서 시작하는 개수 (수정하지 않고)가 있습니다. – Jeeped

+0

콜렉션이 아닌 사전 –

+0

아, 네. 그 문제를 해결해 주셔서 감사합니다. – Jeeped