如何从asp.net webservice将多个对象作为JSON返回

时间:2012-05-30 09:14:27

标签: asp.net-mvc vb.net web-services

我有以下代码来返回单对象JSON数组,

Imports System.ServiceModel
Imports System.ServiceModel.Activation
Imports System.ServiceModel.Web
Imports System.IO
Imports System.Runtime.Serialization.Json
Imports System.Runtime.Serialization

<ServiceContract(Namespace:="")> _
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _
Public Class MessageService
    <OperationContract()> _
    Public Function GetMessage(Id As Integer) As String
        Dim m As New NewMessage()
        m.Id = 1
        m.Text = "Text test"

        Dim stream As New MemoryStream()
        Dim serializer As New DataContractJsonSerializer(GetType(NewMessage))
        serializer.WriteObject(stream, m)

        serializer.WriteObject(stream, m)

        stream.Position = 0
        Dim streamReader As New StreamReader(stream)
        Return streamReader.ReadToEnd()
    End Function
End Class


<DataContract()> _
Public Class NewMessage
    <DataMember()> _
    Public Id As Integer
    <DataMember()> _
    Public Text As String
End Class

返回的数据是:

{id:1,Text:"TText test"}

如何让它返回:

[{id:1,Text:"Text 1"},{id:2,Text:"Text 2"}]

2 个答案:

答案 0 :(得分:0)

要么必须返回类NewMessage的数组,要么返回单个对象,而不是创建一个具有NewMessage数组属性的类并返回该类。

答案 1 :(得分:0)

让它返回

[{id:1,Text:"Text 1"},{id:2,Text:"Text 2"}]

您必须将NewMessage更改为List&lt; NewMessage&gt;代替。 DataContractJsonSerializer将处理剩下的工作。