首页 > 解决方案 > 如何使用字典发布 JSON 对象?

问题描述

这是需要发布的 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)

我得到的错误:

从 JsonReader 读取 JObject 时出错。路径'',第 0 行位置 0

我怎样才能解决这个问题?

标签: jsonvb.net

解决方案


我不能用字典来做到这一点。但我能够将其作为字符串发布。

主要问题是在 Visual Basic 中声明一个包含对象的 JSON 字符串。这是我的做法:

    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

推荐阅读