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=。。。反序列化对象(json,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"
}
]
}
}