Ich habe einen Unit -Test implementiert, um einen Patch -Endpunkt mit "System.Text.json" aufzurufen, um die Daten zu serialisieren und als Inhalt zu senden. Ich bekam immer eine schlechte Anfrage, bis ich herausfand, dass der Serializer das gesamte Patch -Dokument in der Liste "Operationen" zusammenfasst und eine Eigenschaft namens "Contractresolver" fügt. Verwenden Sie Newtonsoft.json Serializer, das zumindest standardmäßig die zusätzliche Eigenschaft hinzufügt, und es funktioniert ordnungsgemäß, da die API den jSonDocumentPatch akzeptiert. JSON "Serializer funktioniert so und
konvertieren nicht einfach zu JSON, genau wie es Newtonsoft tut? oder wenn es möglich ist, etwas zu konfigurieren, um dies zu verhindern. Ich möchte nicht beide Serialisierer innerhalb des Projekts verwenden. Ich war Dokumentation und das taucht in Bezug auf nichts auf. < /P>
Vielen Dank für Ihre Zeit beim Lesen, auch wenn Sie keine Antwort haben.
Ein Beispielcode für die Serialisierung: < /p>
Code: Select all
var patchOperations = new JsonPatchDocument();
patchOperations.Replace(m => m.IntValue, 123);
patchOperations.Remove(m => m.StringValue);
var systemSerializer = JsonSerializer.Serialize(patchOperations);
var newtonSerializer = JsonConvert.SerializeObject(patchOperations);
Die Ergebnisse sind:
systemerializer
Code: Select all
{
"Operations":[
{
"value":123,
"OperationType":2,
"path":"/IntValue",
"op":"replace",
"from":null
},
{
"value":null,
"OperationType":1,
"path":"/StringValue",
"op":"remove",
"from":null
}
],
"ContractResolver":{
}
}
newtonserializer
Code: Select all
[
{
"value":123,
"path":"/IntValue",
"op":"replace"
},
{
"path":"/StringValue",
"op":"remove"
}
]