Neu in .NET 10.0 [40]: JSON Patch zum reinen Testen von Werten

JSON Patch kann rein zum Testen von Werten in einem Objekt verwendet werden, ohne etwas zu ändern.

vorlesen Druckansicht 4 Kommentare lesen
Verkehrsschild mit Aufschrift .NET

(Bild: Pincasso / Shutterstock.com)

Lesezeit: 1 Min.
Von
  • Dr. Holger Schwichtenberg
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Um Werte zu testen, ohne etwas zu ändern, lässt sich in .NET 10.0 JSON Patch verwenden.

Der Dotnet-Doktor – Holger Schwichtenberg
Der Dotnet-Doktor – Holger Schwichtenberg

Dr. Holger Schwichtenberg ist technischer Leiter des Expertennetzwerks www.IT-Visions.de, das mit 53 renommierten Experten zahlreiche mittlere und große Unternehmen durch Beratungen und Schulungen sowie bei der Softwareentwicklung unterstützt. Durch seine Auftritte auf zahlreichen nationalen und internationalen Fachkonferenzen sowie mehr als 90 Fachbücher und mehr als 1500 Fachartikel gehört Holger Schwichtenberg zu den bekanntesten Experten für .NET und Webtechniken in Deutschland.

Das folgende Beispiel zeigt die Anwendung der neuen Klasse JsonPatchDocument aus System.Text.Json Version 10.0 auf ein JSON-Patch-Dokument, dass nur aus Test-Operationen besteht:

CUI.H2("Testen mit JSON Patch-Dokument");
string jsonPatchTest = """
[
    { "op": "test", "path": "/FirstName", "value": "Dr. Holger" },
{ "op": "test", "path": "/PrivateEmail", "value": null},
    { "op": "test", "path": "/PrivateWebsite", "value": null},
    { "op": "test", "path": "/Address/ZipCode", "value": "45257" }
]
""";
 
// JSON Patch-Dokument laden
JsonPatchDocument<Person>? patchTestDoc = JsonSerializer.Deserialize<JsonPatchDocument<Person>>(jsonPatchTest);
 
// JSON Patch-Dokument anwenden auf das Person-Objekt
patchTestDoc!.ApplyTo(person, patchError => CUI.PrintError(patchError.ErrorMessage));

In diesem Fall gibt es keine Fehlerausgabe. Wenn man das JSON-Patch-Dokument aber verändert

CUI.H2("Reines Testen eines Objekts mit JSON Patch-Dokument (absichtlich mit drei Fehlern!)");
string jsonPatchTest = """
[
    { "op": "test", "path": "/FirstName", "value": "Dr.Holger" },
    { "op": "test", "path": "/PrivateEmail", "value": null},
    { "op": "test", "path": "/PrivateWebsite", "value": ""},
    { "op": "test", "path": "/Address/ZipCode", "value": "45251" }
]
""";

bekommt man drei Fehlermeldungen:

Drei Fehler zeigt die Ausgabe (Abb. 1).

Videos by heise

Dabei ist die Fehlermeldung bei 'PrivateWebsite' ungünstig, denn sie unterscheidet nicht zwischen Leerstring und Null. Im Objekt steht null, getestet wird auf Leerstring. In der Fehlermeldung steht jedoch in beiden Fällen ' '.

(rme)