不要将JToken日期时间字符串转换为DateTime
试图将日期时间为字符串的JToken解析为字符串。 它隐含地将它视为DateTime,解析然后作为字符串传回。
原值为: "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(json); Console.WriteLine(myObj.date);