我有一个看起来像这样的对象:
Public Class ExportOptions
Public Sub New()
CategoryIDs = {New Guid("30ndd837-7a2c-477c-b892-67f129f7af4e")}
End Sub
Property CategoryIDs As IEnumerable(Of Guid)
End Class
然后我反序列化JSON,如下所示:
Newtonsoft.Json.JsonConvert.DeserializeObject(Of ExportOptions)(JSONString)
问题是JSON中的值没有进入CategoryID属性?相反,我只剩下构造函数中使用的一个值。
如果我将CategoryID更改为List(Guid),则当我需要新的CategoryID来覆盖当前项目时,会将它们添加到列表中。
在构造函数中添加的值是默认值,必须存在,以防客户端未传递任何信息。
最终我自己解决了这个问题:-
Newtonsoft.Json.JsonConvert.DeserializeObject(Of AmazonSimpleExportOptions)(JSONString,
New Newtonsoft.Json.JsonSerializerSettings With {
.ObjectCreationHandling = Newtonsoft.Json.ObjectCreationHandling.Replace})
Public Class ExportOptions
Private defaultGuid As New Guid("30ndd837-7a2c-477c-b892-67f129f7af4e")
Private cats as List(Of Guid) = {defaultGuid}
Public Sub New()
End Sub
Property CategoryIDs As List(Of Guid)
Get
Return cats
End Get
Set(ByVal Value As List(Of Guid))
cats = Value
If cats.Count = 0 Then cats.Add(defaultGuid)
End Set
End Property
End Class