2017-01-23 3 views
0

Dies passiert gerade erst auf Code, der sich nicht geändert hat (es ist eine externe Bibliothek aus einem Nugget-Paket).Json Serialisierung Hinzufügen von K__BackingField zu meinen Eigenschaften

Wenn ich dies tun:

var client = HttpClient() 
var response = await client.PostAsJsonAsync("some url"), someObject); 

es das Objekt sendet als Json serialisiert, aber mit "k__BackingField" für jede Eigenschaft.

Es war alles funktioniert 100% für Monate. Etwas muss sich in der Lösung geändert haben, die diese Bibliothek verwendet, aber ich bin mir nicht sicher, was.

Ich habe viele Beispiele gesucht und gesehen, wie man dies in einem WebAPI-Projekt beheben kann, aber dies ist eine Windows-App. Ich habe sowieso nicht gesehen, die Konfiguration des JsonSerializer zu ändern, die es verwendet.

+0

http://stackoverflow.com/questions/13022198/how-to-remove-k-backingfield-from-json-when-deserialize – stuartd

+3

Mögliches Duplikat von [So entfernen Sie k \ _ \ _ BackingField von json beim Deserialisieren] (http://stackoverflow.com/questions/13022198/how-to-remove-k-backingfield-from-json-when-deserialize) – Nico

+1

Keine der Klassen serialisiert/deserialisiert haben das Attribut [Serializable]. Noch haben sie [DataContract]. Ich bin nicht sicher, warum ich [DataContract] zu allen von ihnen hinzufügen sollte, als sie vor einer Woche in Ordnung waren. – aircan

Antwort

0

Ich stieß auf das gleiche Problem vor einer Weile. Da hat sich definitiv etwas geändert, da es seit Monaten einwandfrei funktioniert.

Meine Lösung bestand darin, das Attribut [JsonObject] zu meinen Klassen hinzuzufügen. Diese

[JsonObject] 
public class MyClass { ... } 

mir erlaubt, ohne die Verwendung von Eigenschaften zu halten mit [DataMember] auf alle Eigenschaften hinzuzufügen.

Alternativ können Sie auch alle Ihre Eigenschaften in Felder konvertieren, was genauso gut funktionieren sollte, aber wieder mehr Arbeit erfordert.

+0

Das hat für mich funktioniert. Allerdings musste ich das vorher nicht machen. Code, der über ein Jahr lang funktionierte, begann plötzlich, die Backing-Felder hinzuzufügen. Irgendwelche Gedanken darüber, was sich geändert hat? – dherrin79

Verwandte Themen