当使用字符串属性调用 JObject 上的 ToObject 时,会转换日期时间值。
class Program
{
static void Main(string[] args)
{
var a = JObject.Parse("{\"aprop\":\"2012-12-02T23:03:31Z\"}");
var jobject = a.ToObject<A>();
Console.ReadKey();
}
}
public class A
{
public string AProp { get; set; }
}
问题是我的值被转换了,尽管它是一个字符串。 ISO8601 特定字符被跳过:
我预计不会发生任何转变,并希望能够自己进行日期验证和针对特定文化的创建。我还尝试了下一个代码但没有成功:
var jobject = a.ToObject<A>(new JsonSerializer
{
DateParseHandling = DateParseHandling.None
});
The JObject.Parse是为了举例而介绍的。在我的实际任务中,我在控制器上有一个 Web.Api 操作:
public HttpResponseMessage Put(JObject[] requestData)
{
var jobject = a.ToObject<A>();
return SomeCleverStaffResponse();
}
你想要的是
using Newtonsoft.Json;
class Program
{
static void Main(string[] args)
{
var temp = JsonConvert.DeserializeObject<A>("{\"aprop\":\"2012-12-02T23:03:31Z\"}");
Console.ReadKey();
}
}
只要你这样做Parse
因为“2012-12-02T23:03:31Z\”是一个日期,解析器创建一个日期对象,之后的所有内容都已经解析了该对象,因此.ToObject
没有用,因为你正在做的事情是从日期到字符串,这就是你得到“12/...”的原因。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)