Wie man HttpClient Json-serializer zu ignorieren null-Werte
Derzeit arbeite ich mit einer Konsole app, die ich bin mit dem HttpClient zum interagieren mit einem Apache-CouchDB-Datenbank. Ich bin mit diesem Artikel: http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client
Möchte ich zu ignorieren, die null-Eigenschaften in meine Klasse, wenn ich mit der Serialisierung und senden eines Dokuments zu meiner Datenbank über die PostAsJsonSync aber ich bin mir nicht sicher, wie Sie Sie:
public static HttpResponseMessage InsertDocument(object doc, string name, string db)
{
HttpResponseMessage result;
if (String.IsNullOrWhiteSpace(name)) result = clientSetup().PostAsJsonAsync(db, doc).Result;
else result = clientSetup().PutAsJsonAsync(db + String.Format("/{0}", name), doc).Result;
return result;
}
static HttpClient clientSetup()
{
HttpClientHandler handler = new HttpClientHandler();
handler.Credentials = new NetworkCredential("**************", "**************");
HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri("*********************");
//needed as otherwise returns plain text
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
Hier ist die Klasse die ich serialisieren....
class TestDocument
{
public string Schema { get; set; }
public long Timestamp { get; set; }
public int Count { get; set; }
public string _rev { get; set; }
public string _id { get; set; } - would like this to be ignored if null
}
Jede Hilfe sehr geschätzt.
- Hinter den kulissen, sind Sie wahrscheinlich mit Json.NET. stackoverflow.com/questions/9819640/...
- Irgendeine Idee, wie auf der serializer es dann?
- Sieht genau wie mein problem, wenn dabei setzen Dokumente zu CouchDB
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie sind mit Json.NET serialisieren Sie das Objekt, verwenden Sie den NullValueHandling Eigenschaft des JsonProperty Attribut
Schauen Sie sich dieses tolle Artikel und die online-Hilfe für mehr details
Wenn müssen Sie dieses Verhalten für alle Eigenschaften aller Klassen, die Sie gehen zu senden (das ist genau der Fall, dass hat mich zu dieser Frage), ich denke, das würde sauberer sein:
Diese Weise gibt es keine Notwendigkeit zum hinzufügen von Attributen zu Klassen, und Sie immer noch nicht serialisieren alle Werte manuell ein.
HttpClient verwenden.PostAsync
Ich bin mir nicht sicher, Sie können tun, dass mit der
PutAsJsonAsync
wie haben Sie es gleich jetzt. Json.NET können dies tun, obwohl, wenn Sie in der Lage, es zu benutzen, und ein NuGet-Paket besteht, wenn es hilft. Wenn Sie es verwenden können, würde ich schreiben, dieInsertDocument
Funktion so Aussehen: