Ich verwende RestSharp (Version 104.4 über NuGet), um Aufrufe an einen Rest-Webdienst zu senden. Ich habe eine Reihe von Objekten (POCO) entworfen, die mit Ressourcen in der API übereinstimmen. Die Objekteigenschaftsnamen meiner Objekte stimmen jedoch nicht mit denen überein, die vom Restdienst beim Posten von Daten erwartet werden. Daher möchte ich sie "transformieren", wenn ich eine Anfrage an den Rest-Dienst mache, damit sie mit der Übereinstimmung übereinstimmen. Ich habe gelesen, dass das Hinzufügen von SerializeAs
Attribut (mit einem Namen angegeben) auf meiner POCO-Eigenschaft wird sie korrekt serialisieren, aber es wird nicht.RestSharp-Serialisierung zu JSON, Objekt verwendet SerializeAs-Attribut nicht wie erwartet
Mein POCO
Imports RestSharp.Serializers
<Serializable(), SerializeAs(Name:="ApiMember")>
Public Class ApiMember
<SerializeAs(Name:="id")>
Public Property Id As Integer?
<SerializeAs(Name:="email")>
Public Property EmailAddress As String
<SerializeAs(Name:="firstname")>
Public Property Firstname As String
<SerializeAs(Name:="lastname")>
Public Property Lastname As String
End Class
Mein Aufruf an die API
Dim request As RestRequest = New RestRequest(Method.POST)
Dim member As ApiMember = new ApiMember()
member.EmailAddress = "[email protected]"
request.Resource = "members"
request.RequestFormat = DataFormat.Json
request.AddBody(member)
Dim client As RestClient = New RestClient()
client.BaseUrl = "http://url.com"
client.Authenticator = New HttpBasicAuthenticator("username", "password")
client.Execute(Of ApiGenericResponse)(request)
Was geschrieben endet als
{"Id":null,"EmailAddress":"[email protected]","Firstname":null,"Lastname":null}
Nein tice der Name der Eigenschaften stimmt nicht mit denen ich in SerializeAs
angegeben (Großbuchstaben, Name der EmailAddress)
Fehle ich etwas?
Ich bin über das gleiche Problem gestolpert - wie hast du das gelöst? –
Wenn Sie glauben, dass eine dieser Antworten Ihnen geholfen hat, Ihr Problem zu lösen, dann bitte [** akzeptiere diese Antwort **] (http://meta.stackoverflow.com/q/5234/153998). Dies wird Ihre Wertschätzung für die Menschen zeigen, die Ihre Zeit damit verbracht haben, Ihnen zu helfen *. –
@marc_s Ich habe es nicht gelöst, ich habe zu dieser Zeit mit RestSharp experimentiert, und ich habe entweder diese "umbenannten" Eigenschaften nicht verwendet oder meine POCO-Eigenschaften umbenannt, um sie mit denen der REST-API zu vergleichen. – MaxiWheat