У меня есть JSON Я пытаюсь разобрать в VBA. Я успешно проанализировал массив «предложений». Внутри массива «предложений» находится еще один массив «цены» «USD».Анализ массивов с использованием VBA и JSON
Проблема в том, что не каждый объект «предлагает» имеет массив «USD». Я пытаюсь создать объект, который я могу создать таблицу/лист, но я даже не могу получить объекты для печати в режиме отладки. Это работает, но терпит неудачу, потому что не каждый Dict OfferDetails содержит объект «USD».
Что бы я хотел сделать, так это возможность распечатать строку, и если объект «USD» отсутствует, просто пропустите его и напечатайте только те, у которых есть «USD». Я пробовал IsMissing (в коде), но он терпит неудачу, когда он попадает в отсутствующий объект «USD».
Любая идея, как я могу получить эту строку со значениями «USD»? Обратите внимание, что «USD» представляет собой массив и содержит несколько объектов, но я не знаю, как их решать. В идеале я хотел бы разобрать «доллар» так же, как и «предложения». Я полностью потерян, так как я не очень хорош в VBA
Это рабочий скрипт с действующим веб-JSON.
Sub getJSONEP_lib_working()
'Need the JsonConverter found here https://github.com/VBA-tools/VBA-JSON
'Need the Microsoft Scripting Runtime
Dim Parsed As Dictionary
Dim Item As Dictionary
Dim OfferDetails As Dictionary
Dim Price As Dictionary
Dim USD As Dictionary
URL = "http://wraymac.com/JSON/example1.json"
url2 = "[{" & """mpn""" & ":" & """41202""" & "}]"
Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
MyRequest.Open "GET", URL
MyRequest.Send
JsonString = MyRequest.ResponseText
Dim json As Object
Set json = JsonConverter.ParseJson(JsonString)
Set Parsed = JsonConverter.ParseJson(MyRequest.ResponseText)
For Each Item In Parsed("results")(1)("items")
For Each OfferDetails In Item("offers")
'I tried this it doesn't work, it fails when it finds a non existent "USD"
If Not IsMissing(OfferDetails("prices")("USD")(1)(1)) Then
Debug.Print OfferDetails("prices")("USD")(1)(1)
Else
Debug.Print "Missing"
End If
x = Item("mpn") & " " & "sku" & " - " & OfferDetails("sku") & "," & "UID" & " - " & OfferDetails("seller")("uid") & " " & OfferDetails("moq") & "packaging" & " = " & OfferDetails("packaging") & " " & OfferDetails("seller")("name") & " " & Item("manufacturer")("name")
Debug.Print x
'This works but fails because not every Dict OfferDetails contains the "USD" object
'x = Item("mpn") & " " & "sku" & " - " & OfferDetails("sku") & "," & "UID" & " - " & OfferDetails("seller")("uid") & " " & OfferDetails("moq") & "packaging" & " = " & OfferDetails("packaging") & " " & OfferDetails("seller")("name") & " " & Item("manufacturer")("name")& " "&OfferDetails("prices")("USD")(1)(1)
Next OfferDetails
Next
End Sub
Не могли бы вы показать нам фактическую строку JSON? –
Очень долго, причина, по которой я не публиковал сообщение. Итак, вы можете получить его здесь ... http://wraymac.com/JSON/example1.json «http://wraymac.com/JSON/example1.json» Если это не сработает, я могу опубликовать его – Wraymac
Подумайте о том, чтобы пойти сюда и немного форматировать ваш JSON ... http://jsonprettyprint.com/json-pretty-printer.php –