Как я могу опубликовать объект JSON с использованием словаря?

#json #vb.net

#json #vb.net

Вопрос:

Вот содержимое JSON, которое необходимо опубликовать.

 {
 "getcart": {
              "version": "1.0",
              "account": "6566",
              "username": "112",
              "password": "xxxxxxxx",
              "cartid": "57044d79",
} }
  

Код:

 Dim jsonPost As New JsonPost("https://www.example.aspx")
Dim dictData As New Dictionary(Of String, Object)

dictData.Add("version", "1.0")
dictData.Add("account", "6566")
dictData.Add("username", "112")
dictData.Add("password", "xxxxxxxx")
dictData.Add("cartid", "57044d79")

Dim json As JObject = JObject.Parse(JsonPost.postData(dictData))
Dim response As String = JsonPost.postData(dictData)
MsgBox(response)
  

Ошибка, которую я получаю:

Ошибка при чтении JObject из JsonReader. Путь», строка 0, позиция 0

Как я могу это исправить?

Ответ №1:

Я не смог сделать это, используя словарь. Но я смог опубликовать его в виде строки.

Основной проблемой было объявление строки JSON, содержащей объект, в Visual Basic. Вот как я это сделал:

     Dim JsonData As String = "{'getcart':{
                                        'version':'1.0',
                                        'account':'6566',
                                        'username':'112',
                                        'password':'xxxxxxxx',
                                        'cartid':'57044d79',
                                         }}"

    Dim Uri As String = "https://www."
    Dim data = Encoding.UTF8.GetBytes(JsonData)
    Dim result_post = SendRequest(New Uri(Uri), data, "application/json", "POST")
    MsgBox(result_post)

Private Function SendRequest(uri As Uri, jsonDataBytes As Byte(), contentType As String, method As String) As String
    Dim req As WebRequest = WebRequest.Create(uri)
    req.ContentType = contentType
    req.Method = method
    req.ContentLength = jsonDataBytes.Length


    Dim stream = req.GetRequestStream()
    stream.Write(jsonDataBytes, 0, jsonDataBytes.Length)
    stream.Close()

    Dim response = req.GetResponse().GetResponseStream()

    Dim reader As New StreamReader(response)
    Dim res = reader.ReadToEnd()
    reader.Close()
    response.Close()

    Return res
End Function