Newtonsoft JsonConvert,覆盖当前IEnumerable项



我有一个看起来像这样的对象:

    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

相关内容

  • 没有找到相关文章

最新更新