C# 如何将Json中的datetime变量的默认值设置为null

C# 如何将Json中的datetime变量的默认值设置为null,c#,json,C#,Json,我使用json,下面描述了类定义 如何为设置默认值null 所以,如果我不给它赋值,我就不会得到默认值“0001-01-01T00:00:00” 下面是完整的代码和数据示例 使用Newtonsoft.Json; //此命名空间包含所有指示符,并且是必需的。不要改变它。 命名空间NinjaTrader.STSClasses { /// ///此文件包含所有用户定义的指标方法。 /// 公共级贸易 { [JsonProperty(“方向”)] 公共字符串方向{get;set;} [JsonPro

我使用json,下面描述了类定义

如何为设置默认值null

所以,如果我不给它赋值,我就不会得到默认值“0001-01-01T00:00:00”

下面是完整的代码和数据示例

使用Newtonsoft.Json;
//此命名空间包含所有指示符,并且是必需的。不要改变它。
命名空间NinjaTrader.STSClasses
{
/// 
///此文件包含所有用户定义的指标方法。
/// 
公共级贸易
{
[JsonProperty(“方向”)]
公共字符串方向{get;set;}
[JsonProperty(“entryprice”)]
公共双精度输入{get;set;}
[JsonProperty(“exitprice”)]
公共双出口{get;set;}
[JsonProperty(“潜在目标”)]
公共双电势目标{get;set;}
[JsonProperty(“entrytime”)]
公共日期时间入口时间{get;set;}
[JsonProperty(“exittime”)]
公共日期时间出口时间{get;set;}
[JsonProperty(“MaxProfessional”)]
公共双mfe{get;set;}
[JsonProperty(“MaxAbout”)]
公共双mae{get;set;}
[JsonProperty(“maxagainst1ATR”)]
公共双mae1atr{get;set;}
[JsonProperty(“Time1ATR”)]
public DateTime time1atr{get;set;}
[JsonProperty(“maxagainst2ATR”)]
公共双mae2atr{get;set;}
[JsonProperty(“Time2ATR”)]
public DateTime time2atr{get;set;}
[JsonProperty(“收益”)]
公共双增益{get;set;}
[JsonProperty(“信号”)]
公共字符串信号{get;set;}
[JsonProperty(“文书”)]
公共字符串工具{get;set;}
[JsonProperty(“账户”)]
公共字符串帐户{get;set;}
[JsonProperty(“数量”)]
公共整数数量{get;set;}
[JsonProperty(“hitedge”)]
公共布尔hitedge{get;set;}
[JsonProperty(“RealizedProfitLoss”)]
public double RealizedProfitLoss{get;set;}
[JsonProperty(“现金价值”)]
公共双现金值{get;set;}
[JsonProperty(“BuyingPower”)]
公共双购买权{get;set;}
}
}
{
“方向”:“长”,
“入口价格”:1.13211,
“出口价格”:1.13197,
“潜在目标”:0.00025,
“进场时间”:“2016-08-22T13:46:31.7459655-04:00”,
“出口时间”:“2016-08-22T15:46:22.3955682-04:00”,
“最大值”:0.00055,
“最大反对”:-0.00035,
“maxagainst1ATR”:-0.00035,
“Time1ATR”:“0001-01-01T00:00:00”,
“maxagainst2ATR”:-0.00035,
“Time2ATR”:“0001-01-01T00:00:00”,
“收益”:-0.00015,
“信号”:“EnterLongBounce”,
“票据”:“$EURUSD”,
“帐户”:“InteractiveBrokersindicatorbased”,
“数量”:1,
“hitedge”:错误,
“RealizedProfitLoss”:0.0,
“现金价值”:0.0,
“购买力”:0.0
}');

如果要为空,必须使用可为空的DateTime
DateTime?
,DateTime是struct,它的默认值是“0001-01-01T00:00:00”,因此它永远不会为空。

从另一个问题检查此答案


我还没有亲自检查过,但你可以试一试

你试过这个吗?[JsonProperty(“Time2ATR”)]公共日期时间?time2atr{get;set;}使
time2atr
属性如所述可为空,或使用
NullToDefaultConverter
from。您希望该值在JSON中显示为
null
,还是希望完全跳过?
[JsonProperty("Time2ATR")]
   public DateTime time2atr { get; set; }
 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
    }');