【问题标题】:.NET Web API : deserialize JSON object with property as List(Of object).NET Web API:反序列化 JSON 对象,属性为 List(Of object)
【发布时间】:2015-04-08 20:58:40
【问题描述】:

想象一下我创建了一个这样的过滤器类......

Public Class Filter

    Public Enum enuOperator
        [EqualTo] = 0
        [Like] = 1
        [In] = 2
        [StartsWith] = 3
        [EndsWith] = 4
        [NotNull] = 5
        [Null] = 6
    End Enum

    Public Class FilterItem

        Public Property [Field] As String
        Public Property [Operator] As enuOperator
        Public Property [Value] As Object

        Public Sub New(filterField As String, filterOperator As enuOperator, filterValue As Object)
            With Me
                .Field = filterField
                .Operator = filterOperator
                .Value = filterValue
            End With
        End Sub

        Public Sub New(filterField As String, filterValue As Object)
            Me.New(filterField, enuOperator.EqualTo, filterValue)
        End Sub

    End Class

    Public Property Filters As List(Of FilterItem)

    Public Sub New()
    End Sub

    Public Sub New(filterItems As List(Of FilterItem))
        Me.Filters = filterItems
    End Sub

End Class

如您所见,“Filter”这个类包含一个“Filters”属性,它基本上是一个“FilterItem”对象的数组(实际上是一个List)。

现在,我可以使用 JSON 将这个“过滤器”类的一个实例发送到我的 ASP.NET Web API,从而得到这个符号:

{"Filters":[{"Field":"PrTy_Id","Operator":0,"Value":3}]}

但是,在接收端(在 Web API 本身中),虽然它读出的内容完全相同(作为 JSON 格式的字符串),并且它正确转换为“过滤器”对象,但具有属性“过滤器”作为“FilterItem”对象的空列表!

显然我的问题是,我怎样才能读出“过滤器”属性,并将其正确转换为现有的对象列表?

【问题讨论】:

  • 尝试将“Filters”List(of FilterItem) 属性转换为 Array FilterItem() 属性,但没有成功。同样的问题...

标签: json asp.net-web-api


【解决方案1】:

当手动将我的 JSON 字符串反序列化为对象时,我自己想出来了:

显然,我只是在“FilterItem”类中缺少一个 empty(无参数)New() 构造函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 2014-01-30
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多