我有以下的JSON:反序列化JSON屬性作爲布爾或雙
"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
},
}
而且我有下面的類反序列化JSON:
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; }
而當reduce_rate
值是false
我想設置一個0.0
其他的雙值。但是在設置方法中永遠不會進入else
。
有沒有解決這種情況的另一種方法?
那麼在setter中'value'的值是'double',那麼爲什麼你會希望*不能解析它呢?你絕對需要使用這個JSON嗎?擁有一個既可以是雙精度值也可以是布爾值的屬性對我來說似乎很可怕。您可能會發現擁有兩階段流程是最簡單的,首先將其轉換爲明智的JSON。另外,我強烈建議您遵循您的屬性的.NET命名約定,並使用屬性指定它們在JSON中的序列化方式。 –
來自https://euvatrates.com/rates.json的json源代碼。我無法改變json –
它已經做到了你想要的。如果你想測試它,你可以編寫統一測試並傳遞模擬JSON數據,而不是從實際源代碼中獲取它。 – CarbineCoder