Как добавить массив / коллекцию в VBA POST JSON - PullRequest
0 голосов
/ 24 апреля 2020

Я успешно внедряю код VBA-Web в https://github.com/VBA-tools/VBA-Web, но я не знаю, как добавить элемент с массивом или коллекцией в тело. Я совершенно новичок в использовании массива или коллекций для этой цели. Вот данные Json, которые я пытаюсь опубликовать:

{
  "operation": "CREATE",
  "orderNo": "ORD001",
  "type": "D",
  "date": "2014-10-14",
  "location": {
    "address": "393 Hanover St, Boston, MA 02113, USA",
    "locationNo": "LOC001",
    "locationName": "Green Cross Pharmacy North End",
    "acceptPartialMatch": true
  },
  "duration": 20,
  "twFrom": "10:00",
  "twTo": "10:59",
  "load1": 10,
  "load2": 25,
  "vehicleFeatures": ["FR"],
  "skills": ["SK001", "SK002"],
  "notes": "Deliver at back door"
}

Как добавить данные о местоположении в этот код для отправки?

Sub PostMan()
Dim Body As New Dictionary
Body.Add "operation", "CREATE"
Body.Add "orderNo", "ORD101"
Body.Add "type", "D"
Body.Add "date", "2020-04-24"
Body.Add "location", 'How do I the location data here? 
Body.Add  "vehicleFeatures", 'How do I add this item?
Body.Add  "skills", 'How do I add this item?

Dim Client As New WebClient
Dim Response As WebResponse
Set Response = Client.PostJson("https://api.optimoroute.com/v1/create_order?key=AUTH_KEY", Body)

Worksheets("Open1").Range("A1").Value = Response.Content
End Sub

1 Ответ

1 голос
/ 24 апреля 2020

Для большинства моих работ JSON я использую JsonConverter, найденный в этом хранилище . Я создал полезную справку о том, как структурировать JSON объекты в этот ответ . Основываясь на структуре, вы можете добавить свое местоположение как Dictionary, а массивы как Collections.

. Я просмотрел и проверил вывод JSON, используя JsonConverter, но не проверял его с ваш сайт.

Option Explicit

Sub PostMan()
    Dim Body As New Dictionary
    Body.Add "operation", "CREATE"
    Body.Add "orderNo", "ORD101"
    Body.Add "type", "D"
    Body.Add "date", "2020-04-24"

    Dim location As Dictionary
    Set location = New Dictionary
    With location
        .Add "address", "393 Hanover St, Boston, MA 02113, USA"
        .Add "locationNo", "LOC001"
        .Add "locationName", "Green Cross Pharmacy North End"
        .Add "acceptPartialMatch", True
    End With
    Body.Add "location", location

    Dim features As Collection
    Set features = New Collection
    features.Add "FR"
    Body.Add "vehicleFeatures", features

    Dim skills As Collection
    Set skills = New Collection
    With skills
        .Add "SK001"
        .Add "SK002"
    End With
    Body.Add "skills", skills

    Dim json As String
    json = JsonConverter.ConvertToJson(Body, Whitespace:=" ")

    Debug.Print json

'    Dim Client As New WebClient
'    Dim Response As WebResponse
'    Set Response = Client.PostJson("https://api.optimoroute.com/v1/create_order?key=AUTH_KEY", Body)
'
'    Worksheets("Open1").Range("A1").Value = Response.Content
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...