使用JSON.Net序列化程序序列化对象时更改JsonProperty名称

使用JSON.Net序列化程序序列化对象时更改JsonProperty名称,.net,vb.net,json,json.net,.net,Vb.net,Json,Json.net,我有: Public Class Ticket Private _ITicketStyle as ITicketStyle Public Property TicketStyle() as ITicketStyle Get Return _ITicketStyle End Get Set(value as ITicketStyle) _ITicketStyle = value End Set End Property End C

我有:

Public Class Ticket
  Private _ITicketStyle as ITicketStyle
  Public Property TicketStyle() as ITicketStyle
    Get
      Return _ITicketStyle
    End Get
    Set(value as ITicketStyle)
      _ITicketStyle = value
    End Set
  End Property
End Class

Public Class FlightTicket
    Implements ITicketStyle
    Public Property city() as String
End Class

Public Class MovieTicket
    Implements ITicketStyle
    Public Property name() as String
End Class
与:

我得到:
output1={“TicketStyle”:{“city”:“NY”}

以及:

Dim mt as New Ticket()
mt.Ticket = New MovieTicket With { .name="Transformers" }
Dim output2 as String = JsonConvert.SerializeObject(mt)
我得到:
output2={“TicketStyle”:{“name”:“Transformers”}

但我需要:

output1 = {"FlightTicket":{"city": "NY"}} and 
output2={"MovieTicket": {"name": "Transformers"}}

有没有办法实现这一目标?我可以将
JsonProperty(“FlightTicket”)
应用于
TicketStyle
属性,但当
MovieTicket
对象被分配给
TicketStyle
属性时,需要将其更改为“MovieTicket”,与vb.net相比,C#community更大,大多数程序员都会回答与JSON相关的问题。这就是我使用C#tag的原因。将它添加到.NET中,这样你就可以两全其美了。
output1 = {"FlightTicket":{"city": "NY"}} and 
output2={"MovieTicket": {"name": "Transformers"}}