在C#中从JSON读取时保持相同的Datetime格式

时间:2018-09-21 00:39:12

标签: c# json json.net

我有这样的JSON内容

"started_on": "2017-12-01",
"start_time": "2017-12-01T10:00:00+00:00",
"finish_time": "2017-12-01T11:00:00+00:00",

我想以相同格式的字符串读取开始时间和结束时间,并且尝试使用以下代码进行相同操作

 JObject _task = JObject.Parse(response_json);
 string _description = "\n start_time:" + (string)_task["start_time"];
 _description += "\n finish_time:" + (string)_task["finish_time"];

这可以从JSON正确读取,但是当我检查日期时间格式时,我只能看到它像“ 12/01/2017”。 进行转换时如何保持相同的格式,并且我想要JSON参数中的文本

1 个答案:

答案 0 :(得分:2)

您需要指示JSON.NET访问read them as strings

var settings = new JsonSerializerSettings
{
    DateParseHandling = DateParseHandling.None
};
JObject _task = JsonConvert.DeserializeObject<JObject>(response_json, settings);

如果在将它们全部读取为字符串后需要将某些值作为DateTime对象来获取,则可以使用以下方法:

var dt = _task["property"].Value<DateTime>();

尽管在此阶段,您可能只想创建一个表示您的JSON的类:

public class MyTask
{
    public DateTime Property1 {get;set;} // property1 will be read as a DateTime
    public string Property2 {get;set;} // property2 will be read as a string
}
MyTask _task = JsonConvert.DeserializeObject<MyTask>(response_json);