如何使用WCF在JSON中返回两个对象(包括一个列表)

时间:2014-03-21 20:34:36

标签: json vb.net wcf list

我正在努力解决我的问题。

这是我的服务合约(IService1.vb)

<OperationContract()> _
<WebInvoke(Method:="GET", BodyStyle:=WebMessageBodyStyle.Wrapped, ResponseFormat:=WebMessageFormat.Json, UriTemplate:="/GetBooks")> _
Function GetBooks() As List(Of Book)

<DataContract()> _
Class Book
    Public Property bookchapter() As List(Of Chapter)
        Get
            Return m_bookchapter
        End Get
        Set(value As List(Of Chapter))
            m_bookchapter = value
        End Set
    End Property
    Private m_bookchapter As List(Of Chapter)

    Public Property success() As Integer
        Get
            Return m_success
        End Get
        Set(value As Integer)
            m_success = value
        End Set
    End Property
    Private m_success As Integer
End Class

<DataContract()> _
Class Chapter
    Public Property description() As String
        Get
            Return m_description
        End Get
        Set(value As String)
            m_description = value
        End Set
    End Property
    Private m_description As String
End Class

这是我的服务(Service1.vb)

Public Function GetBooks() As List(Of IGPService.Book) Implements IGPService.GetBooks
    Dim books As New List(Of IGPService.Book)

    Dim newBook As IGPService.Book = New IGPService.Book

    For i As Integer = 0 To 3
        Dim newchapter As IGPService.Chapter = New IGPService.Chapter
        newchapter.description = "Chapter1"
        newBook.bookchapter.Add(newchapter)
    Next

    newBook.success = 1

    books.Add(newBook)

    Return books
End Function

当我调用GetBooks时,我收到以下错误:

  

服务器在处理请求时遇到错误。见服务器   记录更多详细信息。

我不知道这里有什么问题。我在Windows EventLog中找不到任何东西。

1 个答案:

答案 0 :(得分:0)

我在Book Class中添加了一个New()Contructor,现在它可以工作了。但我不知道为什么!

Class Book
    Public Property bookchapter() As List(Of Chapter)
        Get
            Return m_bookchapter
        End Get
        Set(value As List(Of Chapter))
            m_bookchapter = value
        End Set
    End Property
    Private m_bookchapter As List(Of Chapter)

    Public Property success() As Integer
        Get
            Return m_success
        End Get
        Set(value As Integer)
            m_success = value
        End Set
    End Property
    Private m_success As Integer

        **Public Sub New()
            bookchapter = New List(Of Chapter)
        End Sub**
End Class

我想明白为什么会这样。有人可以解释我与New()的区别吗?