2016-08-22 3 views
0

я использовать JSON и определение класса описан нижекак установить значение по умолчанию пустое значение для переменной даты и времени в Json

Как установить значение по умолчанию NULL для

[JsonProperty("Time2ATR")] 
    public DateTime time2atr { get; set; } 

поэтому я не получаю значение по умолчанию «0001-01-01T00: 00: 00», если я не присвою ему никакого значения?

полный код и datasample ниже

using Newtonsoft.Json; 
// This namespace holds all indicators and is required. Do not change it. 
namespace NinjaTrader.STSClasses 
{ 
    /// <summary> 
    /// This file holds all user defined indicator methods. 
    /// </summary> 
    public class STSmyTrade 
    { 
     [JsonProperty("direction")] 
     public string direction { get; set; } 

     [JsonProperty("entryprice")] 
     public double entry { get; set; } 

     [JsonProperty("exitprice")] 
     public double exit { get; set; } 

     [JsonProperty("potentialtarget")] 
     public double potentialtarget { get; set; } 

     [JsonProperty("entrytime")] 
     public DateTime entrytime { get; set; } 

     [JsonProperty("exittime")] 
     public DateTime exittime { get; set; } 

     [JsonProperty("maxfavourable")] 
     public double mfe { get; set; } 

     [JsonProperty("maxagainst")] 
     public double mae { get; set; } 


     [JsonProperty("maxagainst1ATR")] 
     public double mae1atr { get; set; } 

     [JsonProperty("Time1ATR")] 
     public DateTime time1atr { get; set; } 

     [JsonProperty("maxagainst2ATR")] 
     public double mae2atr { get; set; } 
     [JsonProperty("Time2ATR")] 
     public DateTime time2atr { get; set; } 

     [JsonProperty("gains")] 
     public double gains { get; set; } 

     [JsonProperty("signal")] 
     public string signal { get; set; } 

     [JsonProperty("instrument")] 
     public string instrument { get; set; } 

     [JsonProperty("account")] 
     public string account { get; set; } 
     [JsonProperty("quantity")] 
     public int quantity { get; set; } 
     [JsonProperty("hitedge")] 
     public bool hitedge { get; set; } 
     [JsonProperty("RealizedProfitLoss")] 
     public double RealizedProfitLoss { get; set; } 
     [JsonProperty("CashValue")] 
     public double CashValue { get; set; } 
     [JsonProperty("BuyingPower")] 
     public double BuyingPower { get; set; } 
    } 
} 

    { 
     "direction": "Long", 
     "entryprice": 1.13211, 
     "exitprice": 1.13197, 
     "potentialtarget": 0.00025, 
     "entrytime": "2016-08-22T13:46:31.7459655-04:00", 
     "exittime": "2016-08-22T15:46:22.3955682-04:00", 
     "maxfavourable": 0.00055, 
     "maxagainst": -0.00035, 
     "maxagainst1ATR": -0.00035, 
     "Time1ATR": "0001-01-01T00:00:00", 
     "maxagainst2ATR": -0.00035, 
     "Time2ATR": "0001-01-01T00:00:00", 
     "gains": -0.00015, 
     "signal": "EnterLongBounce", 
     "instrument": "$EURUSD", 
     "account": "InteractiveBrokersindicatorbased", 
     "quantity": 1, 
     "hitedge": false, 
     "RealizedProfitLoss": 0.0, 
     "CashValue": 0.0, 
     "BuyingPower": 0.0 
    }'); 
+0

Пробовали ли вы это? [JsonProperty ("Time2ATR")] public DateTime? time2atr {get; задавать; } – genericuser

+0

Сделать свойство 'time2atr' равным нулю как [этот ответ] (https://stackoverflow.com/questions/39088824/how-to-set-default-value-to-null-for-datetime-variable-in- json/39088899 # 39088899), или используйте 'NullToDefaultConverter ' из [этого ответа] (http://stackoverflow.com/questions/31747712/json-net-deserialization-null-guid-case/31750851#31750851). – dbc

+0

Вы хотите, чтобы значение отображалось как «null» в JSON, или вы хотите полностью пропустить? – dbc

ответ

3

Если вы хотите нулевой вы должны использовать Nullable DateTime DateTime?, DateTime это структура, и это значение по умолчанию «0001-01-01T00: 00: 00 «поэтому он никогда не будет нулевым.

0

Проверить этот ответ от другого вопроса Using DefaultValueHandling

Я гавань проверить это сам, но вы можете дать ему попробовать

Смежные вопросы