【发布时间】:2021-01-22 07:35:38
【问题描述】:
我目前正在构建一个检索 API 数据并将其保存到数据库中的项目。除了 API 中的 DateTime 值外,一切正常。我有一个使用 RestSharp 获取 API 数据的类,然后它使用 NewtonSoft.Json 将 API 数据反序列化为 JSON 格式,然后将其存储到临时 DTO 类文件中。这是API方法。
public static void getAllRequestData()
{
var client = new RestClient("[My API URL]");
var request = new RestRequest();
var response = client.Execute(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
string rawResponse = response.Content;
AllRequests.Rootobject result = JsonConvert.DeserializeObject<AllRequests.Rootobject>(rawResponse);
}
}
现在这里是 DTO 文件 (AllRequests),它将临时存储转换后的 JSON 数据。
public class AllRequests
{
public class Rootobject
{
public Operation Operation { get; set; }
}
public class Operation
{
public Result Result { get; set; }
public Detail[] Details { get; set; }
}
public class Result
{
public string Message { get; set; }
public string Status { get; set; }
}
public class Detail
{
[Key]
public int Id { get; set; }
public string Requester { get; set; }
public string WorkOrderId { get; set; }
public string AccountName { get; set; }
public string CreatedBy { get; set; }
public string Subject { get; set; }
public string Technician { get; set; }
public string IsOverDue { get; set; }
public string DueByTime { get; set; }
public string Priority { get; set; }
public string CreatedTime { get; set; }
public string IgnoreRequest { get; set; }
public string Status { get; set; }
}
}
Details 中我希望成为 DateTime 格式的代码行是“DueByTime”和“CreatedTime”,而不是字符串值。目前他们只在字符串中保存 JSON 格式的 DateTime 值,例如“1477394860065”。
我尝试将“public string CreatedTime { get; set; }”设置为“public DateTime CreatedTime { get; set; }”但是这只返回了一个错误,因为它是 JSON 格式。我怎样才能纠正这个问题,以便它以 DateTime 格式正确存储在 DTO 中?因为理想情况下我想把这个类文件搭建成一个表,这样它就可以在数据库中保存数据。
有关更多上下文,这是我希望在我的数据库中更正的内容。
我希望显示一个 DateTime,而不是像 Createby 和 DueBy 下的一长串数字。
任何帮助将不胜感激。
【问题讨论】:
-
这是一个以毫秒为单位的 unix 时间戳。您可以将其反序列化为 long,然后拥有一个只读的 jsonignore 属性,在 getter 中,您可以将其转换为 DateTime 以供初学者使用。
-
感谢您的回答,@Fildor 我已经尝试了下面有人发布的实现。但是,当我搭建数据库并运行应用程序时,它仍然没有转换为 DateTime。
标签: c# datetime-format restsharp json-deserialization