2015-04-08 22 views
0

想象我創建了一個過濾器類這樣......的.NET Web API:反序列化JSON對象與財產清單(對象)

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 

正如你所看到的,這個類「過濾器」包含一個屬性「Filters」,它基本上是一個「FilterItem」對象的數組(實際上是一個List)。

現在,我可以在此「過濾器」類的實例發送到我的ASP.NET Web API,使用JSON,造成這種表示法:

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

然而,在接收端(在Web API本身),雖然它讀出完全相同(作爲JSON格式的字符串),並且它正確地轉換爲「Filter」對象,但將「Filters」屬性轉換爲「FilterItem」對象的空列表!

顯然我的問題是,我如何讀出「Filters」屬性,並將其正確地轉換爲現有的對象列表?

+0

嘗試將「Filters」_List(的FilterItem)_屬性轉換爲Array _FilterItem()_屬性,但未成功。同樣的問題... –

回答

0

想通了我自己,手動反序列化時,我的JSON字符串提出異議:

很顯然,我只是缺少一個(無參數)新()在「的FilterItem」類的構造函數。