[英]Do not convert JToken date time string as DateTime
试图解析将日期时间作为字符串保存的 JToken,作为字符串。 隐式地它正在做的是将其视为日期时间,解析然后作为字符串传回。
原始值为: "2015-11-23T00:00:00"
当我做arr["value"].ToString();
我得到: "23/11/2015 00:00:00"
我真正想要的是传递的任何内容,即原始值。
曾尝试使用Formatting.None
,但这会带来双引号等。
有没有简单的方法?
使用DateParseHandling
可以覆盖JSON.NET的自动尝试,以DateTimeify看起来像DateTimey的任何东西。
void Main()
{
var s = "{ \"value\" : \"2015-11-23T00:00:00\" }";
using (var sr = new StringReader(s))
using (var jr = new JsonTextReader(sr) { DateParseHandling = DateParseHandling.None })
{
var j = JToken.ReadFrom(jr);
Console.WriteLine(j["value"].ToString()); // prints '2015-11-23T00:00:00'
}
}
您可以使用声明为'string'的成员来描述该类,并在序列化中使用它,以便将其存储在原始表示形式中:
public class MyObject
{
public string date { get; set ; }
}
string json = "{ \"date\": \"2015-11-23T00:00:00\" }";
var myObj = JsonConvert.DeserializeObject<MyObject>(json);
Console.WriteLine(myObj.date);
我对这个问题的解决方案:
public static string DateToStringExact(dynamic date)
{
string dateString = date.ToString(Formatting.None); // return "2021-01-01T00:00:00"
// To return only 2021-01-01T00:00:00 (without ""):
string res = dateString.Substring(1, dateString.Length-2);
//or
string res = dateString.Replace("\"", "");
return res;
}
您可以通过以下方式调用此函数:
string x = DateToStringExact(arr["value"])
首先使用SerializeObject
,然后使用DeserializeObject
来获取日期字段的安全值。
JsonConvert.DeserializeObject(JsonConvert.SerializeObject(value);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.