C# 使用Json.Net反序列化具有dd/MM/yyyy的嵌套日期

C# 使用Json.Net反序列化具有dd/MM/yyyy的嵌套日期,c#,json,date,serialization,C#,Json,Date,Serialization,这看起来很像的复制品,但提议的解决方案似乎对我不起作用 我有一个测试用例 void Main() { if (File.Exists("config.json")) { string json = File.ReadAllText("config.json"); var dateTimeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter { DateTimeFormat =

这看起来很像的复制品,但提议的解决方案似乎对我不起作用

我有一个测试用例

void Main()
{
    if (File.Exists("config.json"))
    {
        string json = File.ReadAllText("config.json");
        var dateTimeConverter = new Newtonsoft.Json.Converters.IsoDateTimeConverter { DateTimeFormat = "dd/MM/yyyy" };
        PositionForwardingConfiguration config = Newtonsoft.Json.JsonConvert.DeserializeObject<PositionForwardingConfiguration>(json, dateTimeConverter);
        foreach (var client in config.ClientConfiguration.clients)
        {
            Debug.WriteLine(string.Format("Date: {0}", client.MiniumDate));
        }
        json = Newtonsoft.Json.JsonConvert.SerializeObject(config, dateTimeConverter);
        Debug.WriteLine(json);
    }

}
public class PositionForwardingConfiguration
{
    public ClientConfiguration ClientConfiguration { get; set; }
}

public class ClientConfiguration
{
    public ClientInfo[] clients { get; set; }
}
public class ClientInfo
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime MiniumDate { get; set; }
    public string Token { get; set; }
    public Uri Endpoint { get; set; }
}
特别注意:日期不是使用提供的转换器反序列化或序列化的。Newtonsoft.JSON是否发生了一些变化,使其无法工作?我的输入看起来像

{
    "ClientConfiguration": {
        "clients": [
        {
            "Id" : 1,
            "Name" : "1",
            "MinimumDate" : "01/01/2017",
            "Token" : "Token 1",
            "Endpoint" : "http://1"
        },
        {
            "Id" : 2,
            "Name" : "2",
            "MinimumDate" : "02/01/2017",
            "Token" : "Token 2",
            "Endpoint" : "http://2"
        },
        {
            "Id" : 3,
            "Name" : "3",
            "MinimumDate" : "03/01/2017",
            "Token" : "Token 3",
            "Endpoint" : "http://3"
        }
      ]
    }
}

想法?

我看不出在哪里使用日期/时间转换器进行反序列化?问题是日期-时间转换器var dateTimeConverter=newnewtonsoft.Json.Converters.IsoDateTimeConverter{DateTimeFormat=“dd/MM/yyyy”};PositionForwardingConfiguration config=Newtonsoft.Json.JsonConvert.DeserializeObject(Json);似乎没有在嵌套类中使用。我不确定如何使反序列化进程使用我传递给基的转换器。但是,您没有将其传递给基转换器,它应该类似于
config=。。。反序列化对象(j‌​son,dateTimeConverter)
您在最后序列化时仅使用
dateTimeConverter
。顺便说一下,您的数据结构有一个名为
MinimumDate
的成员,而输入文件使用
MinimumDate
,拼写错误的成员由于明显的原因不会使用输入文件中的数据填充。
{
    "ClientConfiguration": {
        "clients": [
        {
            "Id" : 1,
            "Name" : "1",
            "MinimumDate" : "01/01/2017",
            "Token" : "Token 1",
            "Endpoint" : "http://1"
        },
        {
            "Id" : 2,
            "Name" : "2",
            "MinimumDate" : "02/01/2017",
            "Token" : "Token 2",
            "Endpoint" : "http://2"
        },
        {
            "Id" : 3,
            "Name" : "3",
            "MinimumDate" : "03/01/2017",
            "Token" : "Token 3",
            "Endpoint" : "http://3"
        }
      ]
    }
}