我正在尝试使用以下数据填充列表框。 该列表框称为 lbxCamera,我需要用 3 行指令填充它。
我应该在vb.net Winforms环境中使用Newtonsoft.Json。
{
"lbxCamera":
[
{"Instructions":"2nd Instruction"},
{"Instructions":"2nd Instruction"},
{"Instructions":"3rd Instruction"}
]
}
谢谢,
我尝试了很多方法,但没有任何效果。我习惯从数据库中拉取数据;这是我第一次尝试从 JSON 文件获取数据。
这是我的解决方案:如果在文件系统中找到 JSON 文件,则将其读入,并使用
Newtonsoft.Json
进行反序列化。您必须通过 Nuget 包管理器安装 Newtonsoft.Json
。我只是简单地称这个类为TestClass
,因为我不知道你的对象叫什么。
我认为缺乏理解,因为您的 JSON 文件由 list of dictionaries(of string, string)
组成。这种情况并不常见。因为:当一本包含多个项目的字典可以工作时,为什么要拥有多个包含 1 个项目的字典?
Option Strict On
Imports Newtonsoft.Json
Public NotInheritable Class TestClass
<JsonProperty("lbxCamera")>
Public Property LbxCamera As List(Of Dictionary(Of String, String))
End Class
Option Strict On
Imports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If System.IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\new 1.json") Then
ListBox1.Items.Clear()
Dim jsonData As String = System.IO.File.ReadAllText(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\new 1.json")
Dim things As TestClass = JsonConvert.DeserializeObject(Of TestClass)(jsonData)
For Each dict As Dictionary(Of String, String) In things.LbxCamera
For Each kvp As KeyValuePair(Of String, String) In dict
ListBox1.Items.Add(kvp.Key & ": " & kvp.Value)
Next
ListBox1.Items.Add("---")
Next
End If
End Sub
End Class