gpt4 book ai didi

c# - JObject.ToObject() 扩展方法转换存储为字符串的日期时间值

转载 作者:行者123 更新时间:2023-11-30 20:51:33 25 4
gpt4 key购买 nike

当使用字符串属性在 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 特定字符被跳过:

enter image description here

我希望不会发生任何转换,并希望自己能够进行日期验证和特定于文化的创作。我也尝试了下一个代码但没有成功:

var jobject = a.ToObject<A>(new JsonSerializer
{
DateParseHandling = DateParseHandling.None
});

JObject.Parse 是为了示例而引入的。在我的实际任务中,我在 Controller 上有一个 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\”是一个日期,解析器会创建一个 Date 对象,之后的所有内容都已经解析了该对象,因此 .ToObject 是无用的,因为你正在做的是从日期到字符串,这就是你得到“12/...”的原因。

关于c# - JObject.ToObject<T>() 扩展方法转换存储为字符串的日期时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com