Probleme Parsen von JSON mit vba
Kann ich bekommen, was erscheint um einen gültigen JSON-string aus einer web-Abfrage, allerdings kann ich set-items richtig für das Leben von mir. Müssen, um zu bestätigen, dass ich nicht meinen Verstand verliere...
'Call for available reports
Dim URLReporta As String
Dim JSONa As Object
Dim var As Object
Set myrequesta = CreateObject("winhttp.winhttprequest.5.1")
URLReporta = ("https://secure.saashr.com:443/ta/rest/v1/reports?type=Saved&company%3shortname=" & Company)
myrequesta.Open "GET", URLReporta, False
myrequesta.setRequestHeader "Accept", "application/json"
myrequesta.setRequestHeader "Authentication", "Bearer " & Token
myrequesta.setRequestHeader "Content-Type", "application/json"
myrequesta.Send
Set JSONa = JsonConverter.ParseJson(myrequesta.responseText)
Set var = JSONa("SavedName")
Debug.Print var.Count
Bekomme ich einen Fehler auf der Linie Set var = JSONa("SavedName")
:
run-time error '424': Objekt erforderlich
myrequesta.responseText
- Wert ist wie folgt:
{"Berichte":[{"SavedName":"in Diesem Jahr","SettingId":18959322},{"SavedName":"Zeit-Off-Anforderungen","SettingId":18960210},{"SavedName":"Calc Stunden Summary","SettingId":18960209},{"SavedName":"roster","SettingId":18960211},{"SavedName":"E/D/T","SettingId":18823042},{"SavedName":"TestZDR","SettingId":18957188}]}
- Ich kann keine set-items korrekt...festlegen, welche Elemente? Was sind Ihre Fehler? Was willst du analysieren? Was ist der gewünschte output? Kurz gesagt, was ist Ihre Frage?
- Wie es aussieht, bist du mit github.com/VBA-tools/VBA-JSON/blob/master/JsonConverter.bas ?
- aktualisiert den obigen code bekomme ich Laufzeitfehler '424': Objekt erforderlich Zeile "Set var = JSONa("SavedName")
- Wenn Ihr JSON-string umgewandelt werden kann, um XML-Struktur, werden Sie in der Lage XPath-Ausdruck wie
//property[@name = "SavedName"]
eine Sammlung aller Knoten darstelltSavedName
Eigenschaften. - Wussten Sie ScriptControl.Eval("("+ json + ")" ) analysieren Objekt und kann man verwenden CallByName, Zugriff auf Elemente. Siehe meine Antwort hier stackoverflow.com/questions/37711034/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Struktur zurückgegeben
JsonConverter.ParseJson
- Funktion funktioniert nicht auf diese Weise. Für Ihre speziellen JSON-es enthält 3 Ebenen:Root-level-Objekt hat nur eine Eigenschaft
reports
werden, enthält, die second-level-array, die wiederum enthält 6 third-level-Objekte mit EigenschaftenSavedName
undSettingId
. Sie versuchen, zu erhalten third-level-Objekt-Eigenschaft-Wert aus dem root-level-Objekt.Erste die Sie benötigen, um second-level-array, dann Schleife durch die Elemente, die mit Objekten, und rufen Sie die
SavedName
Eigenschaften' - Werte dieser Objekte. Hier ist das Beispiel:Hier ist die Ausgabe:
Wenn Sie wollen einfach nur, um die Anzahl der reports, dann das array und die Anzahl der Elemente in es:
JSON-Objekte kann man sich als eine Sammlung von Wörterbüchern. So haben Sie zu Fuß durch die inneren Werte wie SavedName abrufen gesamte dictionary-Objekte (alle SavedName Werte) oder bestimmte string-Werte in den indizierten Orten (eine SavedName Wert):
Ausgabe