Ich arbeite mit JSON API. Da C# keine Zeichen wie - (minus) oder akzeptiert. (Punkt), ich musste jedes Zeichen durch _ (Unterstrich) ersetzen. Die Ersetzung findet statt, wenn die JSON-Antwort als Zeichenfolge empfangen wird, sodass jeder Attributname, der ein - oder ein. Wird es durch ein _ ersetzt, dann ist jeder Attributname identisch mit den Attributnamen in der Klasse, in die er deserialisiert wird.Smart ersetzen Zeichenfolgen
Um es klarer, hier einige Beispiele:
ich folgende JSON empfangen: { "id": 1, "result": [ { "data": [ { "adm-pass": ""}]}
In der Klasse möchte ich in ich dieses Attribut deserialisieren: public String adm_pass {get; set;}
Also ersetze ich das Minus mit ein Unterstrich, damit der NewtonSoft-Parser es entsprechend deserialisieren kann.
Mein Problem ist, dass ich manchmal einige negative ganze Zahlen in meinem JSON bekomme. Also, wenn ich die String-Ersetzung in: {"beta" : -1}
mache, erhalte ich eine Parsing-Ausnahme, da die -1 (ganze Zahl hier) zu _1 wird und nicht richtig deserialisiert werden kann und eine Ausnahme auslöst.
Gibt es eine Möglichkeit, die Zeichenfolge intelligent zu ersetzen, damit ich diesen Fehler vermeiden kann? Wenn zum Beispiel - ein Int folgt, wird es nicht ersetzt. Wenn es diesen Weg nicht gibt, gibt es eine Lösung für diese Art von Problemen?
Das ist ziemlich cool. Ich frage mich, ob Microsoft DataContractJsonSerializer etwas Ähnliches hat. Ich schaute und es hat eine Möglichkeit, den Namen mit [DataMember (Name = "user_id")] zu ändern, aber ich konnte nicht finden, ob ein Punkt (.) Oder ein Strich (-) darin unterstützt werden. – Rhyous
Vielen Dank, das löst das ganze Problem. –
@Rhyous Selbst mit dem DataContractJsonSerializer von Microsoft könnten Sie etwas wie [DataMember (Name = "Benutzer-ID")] oder [DataMember (Name = "Benutzer.id")] machen. Diese werden unterstützt – Ferdin