【问题标题】:How to parse json and read in vb.net如何解析 json 并在 vb.net 中读取
【发布时间】:2020-07-01 16:24:27
【问题描述】:

我的项目中有这段代码:

Dim request As HttpWebRequest
Dim response As HttpWebResponse = Nothing
Dim reader As StreamReader

request = DirectCast(WebRequest.Create("https://url.to.my.json"), HttpWebRequest)

response = DirectCast(request.GetResponse(), HttpWebResponse)
reader = New StreamReader(response.GetResponseStream())

Dim rawresp As String
rawresp = reader.ReadToEnd()
textbox2.text = rawresp

TextBox2 正确获取 JSON 代码。

这是我的 JSON 代码示例:

{
  "id":174543706,
  "first_name":"Hamed",
  "last_name":"Ap",
  "username":"hamed_ap",
  "type":"private"
}

我的问题:

如何将174543706从JSON代码(“id”)转换成TextBox3.Text???

【问题讨论】:

  • Convert.ToInt32(JObject.Parse(jstr)("id"))
  • @plutonix jstr 错误!我应该改用 rawresp 吗?

标签: json vb.net


【解决方案1】:

试试这个代码:

Dim jsonResulttodict = JsonConvert.DeserializeObject(Of Dictionary(Of String, Object))(rawresp)
Dim firstItem = jsonResulttodict.item ("id") 

希望对你有帮助!!

【讨论】:

  • 'jsonResult' 未声明。由于其保护级别,它可能无法访问。这个怎么加?
  • 我已经修改了错误的代码对不起!现在就试试吧!
【解决方案2】:

您可以使用JavaScriptSerializer 中的System.Web.Script.Serialization

Imports System.Web.Script.Serialization

Module Module1
    Sub Main()

        Dim s As String

        Try
            Dim rawresp As String = "{""id"":174543706,""first_name"":""Hamed"",""last_name"":""Ap"",""username"":""hamed_ap"",""type"":""private""}"

            Dim jss As New JavaScriptSerializer()
            Dim dict As Dictionary(Of String, String) = jss.Deserialize(Of Dictionary(Of String, String))(rawresp)

            s = dict("id")
        Catch ex As Exception

        End Try

    End Sub

End Module

【讨论】:

  • 错误:Dim jss As New JavaScriptSerializer()
  • @Ali 添加对System.Web.Extensions的引用。
  • 此错误:System.Web.Extensions.dll 中出现“System.InvalidOperationException”类型的未处理异常附加信息:数组的反序列化不支持“System.String”类型。跨度>
  • @Ali - 我用我使用的代码更新了我的答案。请注意,我的目标是 Framework 4.5。
  • 我用这个代码:Try Dim jss As New JavaScriptSerializer() Dim dict As Dictionary(Of String, String) = jss.Deserialize(Of Dictionary(Of String, String))(rawresp) TextBox1.Text = dict("id") Catch ex As Exception End Try什么都没发生
【解决方案3】:

如何将 174543706 从 JSON 代码(“id”)获取到 TextBox3.Text

{
  "id": 174543706,
  "first_name": "Hamed",
  "last_name": "Ap",
  "username": "hamed_ap",
  "type": "private"
}

抱歉,如果我的回复晚了。我希望我的回答可以帮助仍然困惑的人。 所以你要做的是获取响应并读取 JSON。

在你做ReadToEnd()之后:

Dim xr As XmlReader = XmlReader.Create(New StringReader(rawresp))
Dim doc As XmlDocument = New XmlDocument()
doc.LoadXml(rawresp)

那么你需要做的是从响应中读取数据。你这样做:

Dim res As String = JsonConvert.SerializeXmlNode(doc)
Dim ThisToken As JObject = Newtonsoft.Json.JsonConvert.DeserializeObject(Of JObject)(res)
Dim response As String = ThisToken("response").ToString()
Dim ThisData As JObject = Newtonsoft.Json.JsonConvert.DeserializeObject(Of JObject)(response)

之后你可以从响应中获取数据并将其转换为字符串

Dim idx As String = ThisData("id").ToString()

// the value of idx will be: 174543706

最后你可以把它放入Texbox3.Text

【讨论】:

    【解决方案4】:

    这行得通:

    Dim request As HttpWebRequest
    Dim response As HttpWebResponse = Nothing
    Dim reader As StreamReader
    
    request = DirectCast(WebRequest.Create("https://url.to.my.json"), HttpWebRequest)
    
    response = DirectCast(request.GetResponse(), HttpWebResponse)
    reader = New StreamReader(response.GetResponseStream())
    
    Dim rawresp As String
    rawresp = reader.ReadToEnd()
    
    
    textbox2.text = JObject.Parse(rawresp)("id")
    

    【讨论】:

      猜你喜欢
      • 2017-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多