Ich habe folgendes json:Deserialize json Eigenschaft als bool oder Doppel
"rates": {
"AT": {
"country": "Austria",
"standard_rate": 20.00,
"reduced_rate": 10.00,
"reduced_rate_alt": 13.00,
"super_reduced_rate": false,
"parking_rate": 12.00
},
"DK": {
"country": "Denmark",
"standard_rate": 25.00,
"reduced_rate": false,
"reduced_rate_alt": false,
"super_reduced_rate": false,
"parking_rate": false
},
}
Und ich habe die folgende Klasse die json deserialisieren:
public string country { get; set; }
public double standard_rate { get; set; }
//public string reduced_rate { get; set; }
private double _reduced_rate;
public double reduced_rate
{
get { return _reduced_rate; }
set
{
bool isDouble = Double.TryParse(value.ToString(), out _reduced_rate);
if (isDouble)
_reduced_rate = value;
else
_reduced_rate = 0.0;
}
}
public string reduced_rate_alt { get; set; }
public string super_reduced_rate { get; set; }
public string parking_rate { get; set; }
Und wenn der Wert von reduce_rate
ein false
ist Ich möchte einen 0.0
sonst den doppelten Wert setzen. Aber in der Set-Methode geht nie in die else
.
Gibt es einen anderen Ansatz, um diese Situation zu lösen?
Nun, der Wert von 'value' im Setter ist ein' double', also warum würdest du erwarten, * nicht * in der Lage zu sein, es zu parsen? Musst du unbedingt mit diesem JSON arbeiten? Eine Eigenschaft zu haben, die entweder ein doppelter oder boolescher Wert sein kann, erscheint mir * schrecklich *. Sie können es am einfachsten finden, einen zweistufigen Prozess zu haben, in dem Sie dies zuerst in vernünftiges JSON konvertieren. Nebenbei empfehlen wir dringend, dass Sie den .NET-Benennungskonventionen für Ihre Eigenschaften folgen und Attribute verwenden, um anzugeben, wie sie in JSON serialisiert werden. –
Die JSON-Quelle von https://euvatrates.com/rates.json. Ich kann die JSON –
nicht ändern, tut es schon, was Sie wollen. Wenn Sie es testen wollen, können Sie unite test schreiben und die mock json Daten übergeben, anstatt sie von der eigentlichen Quelle zu bekommen. – CarbineCoder