Trying to parse JToken which is holding datetime as string, as string. Implicitly what it is doing is considering it as DateTime, parsing and then passing back as string.
Original value is : "2015-11-23T00:00:00"
When I do arr["value"].ToString();
I get : "23/11/2015 00:00:00"
What I really want is whatever was passed i.e. the original value.
Have tried using Formatting.None
, but that brings in double quotes etc.
Is there a simple way round?
Use DateParseHandling
to override JSON.NET's automatic attempts to DateTimeify anything that looks 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'
}
}
You can describe the class with this member declared as 'string' and use it in serialization, so that it is is stored in the original representation:
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);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With