使用Visual Basic和Newtonsoft.JSON向JSON列表添加新条目的实现问题问询
Visual Basic 搭配 Newtonsoft.Json 新增JSON数组元素的解决方案
你已完成JSON读取、新预订对象创建的逻辑,仅需补充获取预订数组、追加新对象、写回文件三个步骤即可,修改后完整代码如下:
' 需先在文件头部导入依赖命名空间 ' Imports System.IO ' Imports Newtonsoft.Json ' Imports Newtonsoft.Json.Linq 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 Dim reservationJson As JObject = JObject.Parse(reservationFile) ' 创建新的预订对象,将字典键类型调整为String更符合JSON规范 Dim newReservationObject As JObject = JObject.FromObject(New Dictionary(Of String, String) From { {"time", time}, {"tableId", tableId}, {"clientName", clientName}, {"status", status} }) ' 核心逻辑:获取reservations数组并追加新对象 Dim reservationList As JArray = CType(reservationJson("reservations"), JArray) reservationList.Add(newReservationObject) ' 将修改后的JSON序列化后写回原文件 File.WriteAllText(reservationJsonFile, reservationJson.ToString()) Trace.WriteLine(newReservationObject) End If End Sub
可选健壮性优化项:
- 可增加
If reservationJson("reservations") Is Nothing OrElse Not TypeOf reservationJson("reservations") Is JArray的判断,匹配JSON无reservations字段、字段类型异常的场景,异常时手动初始化空JArray赋值给reservationJson("reservations")即可 - 如果需要生成压缩格式的JSON,可将写回文件的代码替换为
File.WriteAllText(reservationJsonFile, reservationJson.ToString(Formatting.None))
内容的提问来源于stack exchange,提问作者DeadSec
相关产品推荐
相关产品推荐

