如何将列表序列化为 JSON VB.NET



我有以下代码将消息列表转换为json

Public Class MessageService
    <OperationContract()> _
    Public Function GetMessage(Id As Integer) As String

        Dim msg As New Message()
        Dim stream As New MemoryStream()
        Dim serializer As New DataContractJsonSerializer(GetType(NewMessage))
        Dim dtMessages = msg.getUnreadMessages("3A3458")
        Dim list As New ArrayList
        Dim m As New NewMessage()
        m.Id = 1
        m.Text = "mmsg"
        list.Add(m)
        list.Add(m)
        serializer.WriteObject(stream, list)
        stream.Position = 0
        Dim streamReader As New StreamReader(stream)
        Return streamReader.ReadToEnd()
    End Function
End Class

但是我收到以下错误:

    The server was unable to process the request due to an internal error. 
 For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, 
or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs.

在这里:

Dim serializer As New DataContractJsonSerializer(GetType(NewMessage))

向序列化程序指示要序列化NewMessage实例。

在这里:

serializer.WriteObject(stream, list)

你正在通过一个Arraylist.这显然是模棱两可的。我建议您修改方法,以便它直接返回强类型集合,并将 JSON 序列化留给绑定,而不是在数据协定中编写管道代码:

Public Class MessageService
    <OperationContract()> _
    Public Function GetMessage(Id As Integer) As List(Of NewMessage)
        Dim list As New List(Of NewMessage)
        Dim m As New NewMessage()
        m.Id = 1
        m.Text = "mmsg"
        list.Add(m)
        Return list
    End Function
End Class

最新更新