Ich habe ein sehr seltsames Problem mit ServiceStack beim Serialisieren einer Klasse zu JSON - Objekte sind leer, aber XML funktioniert gut.ServiceStack - leere JSON beim Zurückgeben der Klasse
Einige Vorschläge gefunden, dass JSON Serializer nur funktioniert, wenn Eigenschaften öffentlich sind, aber wie Sie unten sehen können, sind meine Eigenschaften öffentlich.
Bitte siehe unten den Code und Screenshots. Jeder Vorschlag wird sehr geschätzt.
XML
JSON
GetUsers.aspx.vb
Public Class GetUsersAD
Public Property username As String
Public Property fullname As String
Public Function HandleRequest()
Dim _users As New List (Of User)
_users = GetUsersTest(_users)
Return _users
End Function
Public Function GetUsersTest(_users As List (Of User)) As List (Of User)
Dim dt As New DataTable
dt.Columns.Add("username")
dt.Columns.Add("fullname")
For x As Integer = 0 To 5
Dim newUserRow As DataRow = dt.NewRow()
newUserRow("username") = "username-" & x & ""
newUserRow("fullname") = "fullname-" & x & ""
dt.Rows.Add(newUserRow)
Next
For Each row As DataRow In dt.Rows
Dim _user As New User
_user.username = row("username")
_user.fullname = row("fullname")
_users.Add(_user)
Next
Return _users
End Function
End Class
Public Class User
Public username As String = ""
Public fullname As String = ""
End Class
Public Class Users
Public username As String = ""
Public fullname As String = ""
End Class
WS.vb
Public Class WrapperGetUsers
Implements IService(Of GetUsersAD)
Public Property username As String
Public Property fullname As String
Public Function Execute(ByVal request As GetUsersAD) As Object Implements ServiceStack.ServiceHost.IService(Of GetUsersAD).Execute
Return request.HandleRequest()
End Function
End Class
Sobald der Benutzerklasse 'öffentliche Eigenschaften hinzugefügt wurden, funktioniert alles. Danke für den Tipp. – Iladarsda
Es sieht auch so aus, als könnten Sie diese Eigenschaften aus den Klassen "GetUsersAD" und "WrapperGetUsers" entfernen, es sei denn, Sie verwenden sie für einen anderen Zweck. Stellen Sie die Eigenschaften, die Sie in Ihrer Anfrage/Antwort haben möchten, grundsätzlich nicht in Ihre Serviceklassen, sondern in eine separate DTO-Klasse (z. B. Ihre "User" -Klasse). –
Ich war nicht sicher, wo ich die Eigenschaften setzen sollte, also benutzte ich sie überall. Danke für den Tipp. – Iladarsda