Я пробовал предыдущий ответ. Все работает отлично, пока мои данные, извлеченные из сервера в виде Json не дает мне ключ с несколькими объектамиЧтение объекта Json в VBA
Excel VBA: Parsed JSON Object Loop
что-то вроде этого { «messageCode»: нулевой, «responseStatus»: «успех» , "message": null, "resultObject": null, "resultObject2": [{"fxCcyPair": "USD"}, {"fxCcyPair": "EUR"}, {"fxCcyPair": "JPY"}, {" fxCcyPair ":" GBD "}]," resultObject3 ": null," resultObject4 ": null}
Как я могу получить значение в« resultObject2 »? поскольку для меня нет ключа, и я не могу зацикливать на нем объект.
Public Sub InitScriptEngine()
Set ScriptEngine = New ScriptControl
ScriptEngine.Language = "JScript"
ScriptEngine.AddCode "function getProperty(jsonObj, propertyName) { return jsonObj[propertyName]; } "
ScriptEngine.AddCode "function getKeys(jsonObj) { var keys = new Array(); for (var i in jsonObj) { keys.push(i); } return keys; } "
ScriptEngine.AddCode "function getSentenceCount(){return obj.sentences.length;}"
ScriptEngine.AddCode "function getSentence(i){return obj.sentences[i];}"
End Sub
Public Function DecodeJsonString(ByVal JsonString As String)
Set DecodeJsonString = ScriptEngine.Eval("(" + JsonString + ")")
End Function
Public Function GetProperty(ByVal JsonObject As Object, ByVal propertyName As String) As Variant
GetProperty = ScriptEngine.Run("getProperty", JsonObject, propertyName)
End Function
Public Function GetObjectProperty(ByVal JsonObject As Object, ByVal propertyName As String) As Object
Set GetObjectProperty = ScriptEngine.Run("getProperty", JsonObject, propertyName)
End Function
Public Function GetKeys(ByVal JsonObject As Object) As String()
Dim Length As Integer
Dim KeysArray() As String
Dim KeysObject As Object
Dim index As Integer
Dim Key As Variant
Set KeysObject = ScriptEngine.Run("getKeys", JsonObject)
Length = GetProperty(KeysObject, "length")
ReDim KeysArray(Length - 1)
index = 0
For Each Key In KeysObject
KeysArray(index) = Key
Debug.Print Key
index = index + 1
Next
GetKeys = KeysArray
End Function
Благодаря
Есть несколько подходов перечисленные в вопросе, на который вы ссылаетесь: просьба указать код, который вы используете в своем вопросе. –
@TimWilliams благодарит за ваш ответ. Я обновил свой код в questoin – user1560963