Как передать сложный объект JSON через VB.net для вызова Rest API - PullRequest
0 голосов
/ 26 января 2019

У меня есть API отдыха, который я должен вызывать из своего кода vb.net. В Почтальоне я передаю аргументы в Теле следующим образом:

{
    "Search" : 
    {
        "EmpName" : "Rachel",
        "EmpID" : "1100320"

    },
    "IncludeAttributes" : ["EmpId", "EmpName","Department","Salary","ManagerId"]
}

Моя проблема в том, что я не уверен, как я могу передать этот тип параметра через мой вызов из вызова VB.Net. Вот что я попробовал:

Dim searchParameters = New Dictionary(Of String, String)()
        searchParameters.Add("EmpName", "Rachel")
        searchParameters.Add("EmpID", "1100320")
        Dim jsonSearchParameters = 
                        JsonConvert.SerializeObject(searchParameters)
        Dim stringContent = New StringContent(jsonSearchParameters, Encoding.UTF8, "application/json")

А теперь я не знаю, как передать часть IncludeAttributes в один и тот же объект. Любая помощь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Как предложил cricket_007, я попробовал словарь строк, объектов, и он работал как шарм. Для любого другого, кто придет сюда с подобной проблемой, вот мой кусок кода, который работал:

Dim searchParameters = New Dictionary(Of String, String)()
searchParameters.Add("EmpId", EmpId)
searchParameters.Add("EmpName", "Rachel")

Dim includeAttributes() As String = {"EmpId", "Name", "Dept", "Manager", "Salary"}

Dim SearchAttributes As New Dictionary(Of String, Object)
SearchAttributes.Add("Search", searchParameters)
SearchAttributes.Add("IncludeAttributes", includeAttributes)

Dim jsonSearchParameters = JsonConvert.SerializeObject(SearchAttributes)
0 голосов
/ 28 января 2019

Поскольку @ cricket_007 предполагает, что словарь (Of String, Object) будет работать:

Dim search = New Dictionary(Of String, String) From {
    {"EmpName", "Rachel"},
    {"EmpID", "1100320"}
}

Dim searchParameters = New Dictionary(Of String, Object) From {
    {"Search", search},
    {"IncludeAttributes", New String() {"EmpId", "EmpName", "Department", "Salary", "ManagerId"}}
}

Dim jsonSearchParameters = JsonConvert.SerializeObject(searchParameters)
Dim stringContent = New StringContent(jsonSearchParameters, Encoding.UTF8, "application/json")

Либо создайте класс для хранения параметров:

Public Class Search
    Public Property EmpName As String
    Public Property EmpID As String
End Class

Public Class SearchParameters
    Public Property Search As Search
    Public Property IncludeAttributes As String()
End Class

и затем заполните классы соответствующими данными:

Dim search = New Search With
    {
        .EmpName = "Rachel",
        .EmpID = "1100320"
    }

Dim searchParameters = New SearchParameters With
    {
        .Search = search,
        .IncludeAttributes = New String() {"EmpId", "EmpName", "Department", "Salary", "ManagerId"}
    }

Dim jsonSearchParameters = JsonConvert.SerializeObject(searchParameters)
Dim stringContent = New StringContent(jsonSearchParameters, Encoding.UTF8, "application/json")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...