Json.NET Disable the deserialization on DateTime

Viewed 25902

Here is the code:

        string s = "2012-08-08T01:54:45.3042880+00:00";

        JObject j1 = JObject.FromObject(new
        {
            time=s
        });

        Object o = j1["time"];

We can check that o is string and equals "2012-08-08T01:54:45.3042880+00:00"

Now we transfer j1.ToString() to another program, which is

       {
          "time": "2012-08-08T01:54:45.3042880+00:00"
       }

then at the other program, try to parse it back to JObject, which is

       JObject j2 = JObject.Parse(j1.ToString());

       Object o2 = j2["time"];

Now, if we check o2, o2's type is Date, o2.ToString() is 8/7/2012 9:54:45 PM.

My question is:

Is there is way to disable the Date deserialization for JObject.Parse , and just get the raw string?

Thanks in advance

2 Answers

You can accomplish this using JsonConvert.DeserializeObject as well, by using JsonSerializerSettings:

string s = "2012-08-08T01:54:45.3042880+00:00";
string jsonStr = $@"{{""time"":""{s}""}}";

JObject j1 = JsonConvert.DeserializeObject<JObject>(jsonStr, new JsonSerializerSettings {DateParseHandling = DateParseHandling.None});
Related