You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:19:56