用 JSON 列表填充 winforms vb.net 中的列表框

问题描述 投票:0回答:1

我正在尝试使用以下数据填充列表框。 该列表框称为 lbxCamera,我需要用 3 行指令填充它。

我应该在vb.net Winforms环境中使用Newtonsoft.Json。

{
    "lbxCamera":
    [
        {"Instructions":"2nd Instruction"},
        {"Instructions":"2nd Instruction"},
        {"Instructions":"3rd Instruction"}
    ]
}

谢谢,

我尝试了很多方法,但没有任何效果。我习惯从数据库中拉取数据;这是我第一次尝试从 JSON 文件获取数据。

json vb.net winforms listbox
1个回答
0
投票

这是我的解决方案:如果在文件系统中找到 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

ListBox containing parsed strings

© www.soinside.com 2019 - 2024. All rights reserved.