2017-02-22 4 views
0

wenn jemand ungültig JSON meine WebAPI sendet:Json deserialize, setzt leere Elemente Array

"items" : [ 
     , 
     {    
      ... 
     } 
] 

dann wird die Deserialisierung nicht scheitern und setzt einen „Null“ -Wert als das erste Element des Arrays ist es möglich, den JSON-Deserialisierer fehlzuschlagen und einen Fehler zurückzugeben? oder einfach null Elemente aus dem Array entfernen.

Ich habe bereits versucht, einen Konverter hinzuzufügen, wo ich leere Elemente entfernen kann, aber ich kann Quelle nicht finden, wie vorhandene Array (de) Serialisierung funktioniert.

Ich habe MassTransit.Serialization.ListJsonConverter gefunden, die Liste/Array deserialisieren kann, also überschreibe ich sie base deserialize-Methode und überprüfe das Ergebnis, wenn es Nullwerte enthält, nur Ausnahme, aber für mich ist es merkwürdig, dass Newtonsoft.Json nicht enthalten Array-Wandler

wie es für WebAPI ist, ich will nicht, etwas zu analysieren, von mir so einzig mögliche Lösung zu aktuellen Deserialisierung Methoden

+3

ein Grund könnte sein, dass Ihre Json ist nicht in einem korrekten Format – Valkyrie

+0

Valkyriee ist richtig, der bessere Weg wäre, um die Ursache für die beschädigten Daten zu entfernen, nicht damit umzugehen. – Robert

+0

Ich weiß, dass es falsch ist, aber Deserializer nicht fehlschlagen und Serverfehler ist nicht gut Antwort auf ungültige JSON, so sollte es Fehlerantwort mit der richtigen Beschreibung zurücksenden, wo Fehler in JSON ist oder nur Nullelemente –

Antwort

-1

In Bezug auf Ihren Kommentar zu erweitern. Sie können die json Zeichenfolge wie folgt analysieren:

string jsonString = "SOME JSON STRING"; 
try 
{ 
    JsonValue.Parse(jsonString); 
} 
catch (FormatException fex) 
{ 
    //handle formatting exceptions 
} 
catch (Exception ex) //some other exception 
{ 
    //handle other exceptions 
} 

Auf Format Sie einige wertvolle Antwort zurückgeben kann.

+0

Das Problem ist, dass der aktuelle Code mit der angezeigten Eingabe keine Ausnahme auslöst. – CodeCaster