C# Json.NET对象日期序列化格式
在使用Newtonsoft.Json ToObject将Json转换为自定义对象时,我尝试设置自定义日期格式,但尝试了不同的方法,根本无法让它更改日期格式C# Json.NET对象日期序列化格式,c#,.net,json.net,C#,.net,Json.net,在使用Newtonsoft.Json ToObject将Json转换为自定义对象时,我尝试设置自定义日期格式,但尝试了不同的方法,根本无法让它更改日期格式 public class CustomObject { public string DateRecordedString { get; set; } } static void Main(string[] args) { string jsonR
public class CustomObject
{
public string DateRecordedString { get; set; }
}
static void Main(string[] args)
{
string jsonResult = "[{\"daterecordedstring\":\"2016-11-21T08:24:42\"}]";
JToken jtokenResult = JToken.Parse(jsonResult);
var objectResult1 = jtokenResult.ToObject<CustomObject[]>();
Console.WriteLine(objectResult1.First().DateRecordedString); // -> 11/21/2016 08:24:42
var objectResult2 = jtokenResult.ToObject<CustomObject[]>(new JsonSerializer { DateParseHandling = DateParseHandling.None });
Console.WriteLine(objectResult2.First().DateRecordedString); // -> 11/21/2016 08:24:42
var objectResult3 = jtokenResult.ToObject<CustomObject[]>(new JsonSerializer { DateFormatString = "yyyy-M-d" });
Console.WriteLine(objectResult3.First().DateRecordedString); // -> 11/21/2016 08:24:42
}
公共类CustomObject
{
公共字符串DateRecordedString{get;set;}
}
静态void Main(字符串[]参数)
{
字符串jsonResult=“[{\”daterecordedstring\”:\“2016-11-21T08:24:42\””;
JToken jtokenResult=JToken.Parse(jsonResult);
var objectResult1=jtokenResult.ToObject();
Console.WriteLine(objectResult1.First().DateRecordedString);//->11/21/2016 08:24:42
var objectResult2=jtokenResult.ToObject(新的JsonSerializer{DateParseHandling=DateParseHandling.None});
Console.WriteLine(objectResult2.First().DateRecordedString);//->11/21/2016 08:24:42
var objectResult3=jtokenResult.ToObject(新的JsonSerializer{DateFormatString=“yyyy-M-d”});
Console.WriteLine(objectResult3.First().DateRecordedString);//->11/21/2016 08:24:42
}
如何让ToObject以我想要的格式返回日期(或保持不变)?看起来像是
JToken。Parse
在您之前进行一些类型转换
如中所述
感谢用户5090812JToken的ToObject不尊重DateParseHandling=DateParseHandling。无 代码如下: 项目=>JToken类型
Dictionary<string, string> data = item.ToObject<Dictionary<string, string>>(new JsonSerializer { DateParseHandling=DateParseHandling.None});
现在,如果您对每个JToken循环使用这个JArray并使用JToken.ToObject,您将不会得到格式化的datetime。您读过这个吗?是的,谢谢,但它没有帮助-无论出于什么原因,我上面的代码总是生成m/d/y类型的格式。什么“文化”你的环境在新西兰吗?m/d/y不是我的约会格式你是对的,它比我想象的更早进行转换。
Dictionary<string, string> data = item.ToObject<Dictionary<string, string>>(new JsonSerializer { DateParseHandling=DateParseHandling.None});
Newtonsoft.Json.Linq.JArray arr = JsonConvert.DeserializeObject(data, new JsonSerializerSettings { DateParseHandling=DateParseHandling.None}) as Newtonsoft.Json.Linq.JArray;