C# json反序列化中的datetime字段
我有一个.json,如下所示:C# json反序列化中的datetime字段,c#,json,ssis,deserialization,json-deserialization,C#,Json,Ssis,Deserialization,Json Deserialization,我有一个.json,如下所示: [ { "number":"00000001", "dt_doc":"2019-09-26T17:39.000Z", "address":"complete address" } ] 但我对dt_doc字段有问题,这是我的反序列化代码。。。 我主要有以下几点: public override void CreateNewOutputRows() { String jsonFi
[
{
"number":"00000001",
"dt_doc":"2019-09-26T17:39.000Z",
"address":"complete address"
}
]
但我对dt_doc字段有问题,这是我的反序列化代码。。。
我主要有以下几点:
public override void CreateNewOutputRows()
{
String jsonFileContent = File.ReadAllText(Variables.JsonFilePath);
JavaScriptSerializer js = new JavaScriptSerializer();
List<Testata> testata = js.Deserialize<List<Testata>>(jsonFileContent);
foreach(Testata test in testata)
{
Output0Buffer.AddRow();
Output0Buffer.number= test.number;
Output0Buffer.dtdoc = test.dt_doc;
Output0Buffer.address= test.address;
}
}
但我在这个领域有一个例外,可能与8601标准有关,有什么办法可以解决吗
这是一个例外:
错误:System.FormatException:2019-09-26T17:39.000Z它不是DateTime的有效值。-->System.FormatException:字符串未识别为有效的日期时间值
错误是因为日期中缺少秒
"dt_doc":"2019-09-26T17:39.000Z"
应该是
"dt_doc":"2019-09-26T17:39.00.000Z"
如果这是有意的,那么可以指定格式。我已经用Newtonsoft.Json试过了
您可以在课堂上以字符串形式阅读它,然后:
DateTime.ParseExact(test.dt_doc,"yyyy-MM-ddTHH:mm.fffZ");
不建议使用类,而是切换到Json.NET。要使用JavaScriptSerializer实现它,您应该创建自定义JavaScriptConverter,如本文所示,但OP正在使用JavaScriptSerializer@PavelAnikhouski谢谢你。。我已经更新了提到我使用的库的帖子。我仍然得到了我在第一篇帖子中添加的异常,我尝试了这种方式,我没有得到异常,但我看不到数据字段,只有其他字段,但没有这个字段
public class Testata
{
[JsonConverter(typeof(DateFormatConverter), "yyyy-MM-ddTHH:mm.fffZ")]
public DateTime dt_doc { get; set; }
}
public class DateFormatConverter : IsoDateTimeConverter
{
public DateFormatConverter(string format)
{
DateTimeFormat = format;
}
}
List<Testata> testata = JsonConvert.DeserializeObject<List<Testata>>(jsonString);
DateTime.ParseExact(test.dt_doc,"yyyy-MM-ddTHH:mm.fffZ");