gpt4 book ai didi

vb.net - 傻瓜的简单 JSON 反序列化

转载 作者:行者123 更新时间:2023-12-04 15:09:05 25 4
gpt4 key购买 nike

尝试反序列化从网络源返回的以下 json:

{
"cards": [
{
"high": "8.27",
"volume": 5,
"percent_change": "0.00",
"name": "Wurmcoil engine",
"url": "http://blacklotusproject.com/cards/Scars+of+Mirrodin/Wurmcoil+Engine/",
"price": "6.81",
"set_code": "SOM",
"average": "5.67",
"change": "0.00",
"low": "1.12"}],
"currency": "USD"
}

我将 json.net 与 visual basic 一起使用,这对它们都是新的,尤其是 vb 的面向对象部分。我只想提取“价格”变量。我已经设置了一个类:

Public Class Card
Public high As String
Public volume As String
Public percent_change As String
Public name As String
Public url As String
Public price As String
Public set_code As String
Public average As String
Public change As String
Public low As String
End Class

我目前使用的代码是:

Public Sub parse_json(url As String)
Dim blp_json As String = ""
Dim wClient As New WebClient
wClient.Proxy = System.Net.HttpWebRequest.DefaultWebProxy
blp_json = wClient.DownloadString(url)
MessageBox.Show(blp_json)
Dim card_1 = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Card)(blp_json)
PriceTextBox.Text = card_1.price
TextBox1.AppendText(card_1.ToString)
TextBox1.AppendText(blp_json)

End Sub

只是尝试了许多不同的事情来掌握它,并不确定我在做什么。我认为我的卡片类不正确,因为“价格”似乎嵌套在卡片中:[{...}]

我根本不知道反序列化 json,更不知道如何/正确地/在 vb 中进行反序列化。

最佳答案

我使用 System.Web.Script.Serialization.JavaScriptSerializer 进行 JSON 反序列化。由于 cards 包含一个 JSON 对象数组,您的示例稍微复杂了一些。这由“[”和“]”表示。此示例代码将向您展示如何处理它,而不管 cards 是否为数组。如果您确定 cards

中始终存在数组,您可能希望忽略 Else

确保您在项目中包含对 System.Web.Extensions 的引用,并且...

Imports System.Web.Script.Serialization

然后……

Dim MySerializer As JavaScriptSerializer = New JavaScriptSerializer()
Dim dictResult As Dictionary(Of String, Object) = MySerializer.Deserialize(Of Dictionary(Of String, Object))(blp_json)

Dim dictCard As Dictionary(Of String, Object)

If dictResult.ContainsKey("cards") Then

If TypeOf dictResult("cards") Is ArrayList Then

Dim arrResult As ArrayList = DirectCast(dictResult("cards"), ArrayList)

For Each arrCardRecord In arrResult

dictCard = DirectCast(arrCardRecord, Dictionary(Of String, Object))

If dictCard.ContainsKey("price") Then Console.WriteLine(dictCard("price"))

Next
Else
dictCard = DirectCast(dictResult("cards"), Dictionary(Of String, Object))
If dictCard.ContainsKey("price") Then Console.WriteLine(dictCard("price"))
End If

End If

关于vb.net - 傻瓜的简单 JSON 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14807980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com