【问题标题】:Adding a new item to a list json using Visual Basic使用 Visual Basic 将新项目添加到列表 json
【发布时间】:2022-01-04 21:30:14
【问题描述】:

所以我正在构建一个应用程序并且我正在读取一个 JSON 文件,因此我可以添加一个新的预订,但是在网上搜索后,我没有找到任何方法可以使用 @ 将新的 dict 添加到 list 987654323@和Newtonsoft.JSON

json文件:

{"reservations": [{"time": "07:00 pm", "tableId": "1", "clientName": "Antonio Goncalves", "status": "pending"}]}

基本上我想在预订列表中添加一个新的值字典。

当前函数

Public Sub SetReservation(time As String, tableId As String, clientName As String, Optional status As String = "pending")
        Dim reservationFile As String = File.ReadAllText(reservationJsonFile)

        If Not String.IsNullOrEmpty(reservationFile) And Not String.IsNullOrWhiteSpace(reservationFile) Then
            Dim reservationJson = Linq.JObject.Parse(reservationFile)
            Dim newReservationObject = Linq.JObject.FromObject(New Dictionary(Of Object, Object) From {{"time", time}, {"tableId", tableId}, {"clientName", clientName}, {"status", status}})

            Trace.WriteLine(newReservationObject)
        End If
    End Sub

【问题讨论】:

  • 您应该创建一个保留对象并将 json 反序列化为 List(Of Reservation)。然后您可以简单地添加一个新的reservation 到列表中,将其序列化并保存到文件中。

标签: json vb.net json.net


【解决方案1】:

创建代表您的 json 的类使使用 json 变得更加简单。查看为表示您的 json 数据而创建的类以及如何在您的子例程中使用它。

'Root object representing the "reservations" key in the json file
Public Class ReservationData
    Public Property Reservations As List(Of Reservation)
End Class

'Properties match the expected keys in the json file
Public Class Reservation
    Public Property Time As String
    Public Property TableId As String
    Public Property ClientName As String
    Public Property Status As String
End Class

作为附加说明包含的评论。

Public Sub SetReservation(time As String, tableId As String, clientName As String, Optional status As String = "pending")
    Dim reservationFile As String = File.ReadAllText(reservationJsonFile)

    If Not String.IsNullOrWhiteSpace(reservationFile) Then
        'Convert the json string to a ReservationData object
        Dim reservationData = JsonConvert.DeserializeObject(Of ReservationData)(reservationFile)
        'Create a new Reservation
        Dim newReservation = New Reservation With {.Time = time, .TableId = tableId, .ClientName = clientName, .Status = status}

        'Access the Reservations list from reservationData and Add the new Reservation
        reservationData.Reservations.Add(newReservation)

        'Overwrite the file with the updated reservationData
        File.WriteAllText(reservationJsonFile, JsonConvert.SerializeObject(reservationData))
    End If
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多