VB.NET如何组合嵌套类并序列化为指定格式JSON?
解决方法:组合类实例生成目标JSON
方法1:定义根对象类
直接创建一个包含WareHouse和Originaddress属性的根类,通过实例化根类并赋值两个子对象,最后序列化根类实例即可得到组合后的JSON。
假设你的现有类定义如下(示例):
Public Class WareHouse Public Property WarehouseId As Integer Public Property Name As String ' 其他业务属性... End Class Public Class Originaddress Public Property Street As String Public Property City As String ' 其他业务属性... End Class
创建根类封装两个子对象:
Public Class ShipmentRequest Public Property Warehouse As WareHouse Public Property OriginAddress As Originaddress End Class
实例化并序列化(以System.Text.Json为例):
' 初始化子对象 Dim myWarehouse As New WareHouse() With { .WarehouseId = 1001, .Name = "Central Warehouse" } Dim myOriginAddr As New Originaddress() With { .Street = "456 Oak Ave", .City = "Chicago" } ' 组合成根对象 Dim request As New ShipmentRequest() With { .Warehouse = myWarehouse, .OriginAddress = myOriginAddr } ' 序列化生成JSON Dim jsonString As String = System.Text.Json.JsonSerializer.Serialize(request)
如果使用Newtonsoft.Json(Json.NET),序列化代码替换为:
Dim jsonString As String = Newtonsoft.Json.JsonConvert.SerializeObject(request)
方法2:使用匿名类型(无需新增类)
如果不想额外定义根类,可直接用匿名类型临时封装两个对象,适合一次性场景:
' 初始化子对象 Dim myWarehouse As New WareHouse() With { .WarehouseId = 1001, .Name = "Central Warehouse" } Dim myOriginAddr As New Originaddress() With { .Street = "456 Oak Ave", .City = "Chicago" } ' 匿名类型组合两个对象 Dim combinedObj = New With { .Warehouse = myWarehouse, .OriginAddress = myOriginAddr } ' 序列化(System.Text.Json) Dim jsonString As String = System.Text.Json.JsonSerializer.Serialize(combinedObj) ' 或者Newtonsoft.Json序列化 'Dim jsonString As String = Newtonsoft.Json.JsonConvert.SerializeObject(combinedObj)
两种方法生成的JSON结构示例:
{ "Warehouse": { "WarehouseId": 1001, "Name": "Central Warehouse" }, "OriginAddress": { "Street": "456 Oak Ave", "City": "Chicago" } }
如果目标JSON的属性名和类属性名不匹配,可通过特性调整:比如System.Text.Json用<JsonPropertyName("目标属性名")>,Newtonsoft.Json用<JsonProperty("目标属性名")>。
内容的提问来源于stack exchange,提问作者Christopher Faulkner
相关产品推荐
相关产品推荐

