I am trying to use Json.NET to serialize some Noda time values ββand issues. Serialization is quite simple:
LocalDateTime dt = ... // Assigned elsewhere LocalDateTimePattern isoDateTimePattern = LocalDateTimePattern.GeneralIsoPattern; JObject root = new JObject(); root.Add("time", isoDateTimePattern.Format(dt)); // Serialize other elements using (var sw = new StreamWriter(stream)) { serializer.Serialize(sw, root); }
But deserialization is problematic. Json.NET seems to recognize the date and time formatted in ISO from the top and automatically convert it to a DateTime object, which is not what I want.
using (var sr = new StreamReader(stream)) { using (var jr = new JsonTextReader(sr)) { var root = serializer.Deserialize<JObject>(jr);
From the fact that timeStr comes out as a date and time in US format, I would suggest that time.Value<string>() just calls ToString on some internal DateTime object that Json.NET has already parsed. I could do something like
var cdt = time.Value<DateTime>(); LocalDateTime ldt = new LocalDateTime(cdt.Year, cdt.Month, cdt.Day, cdt.Hour, cdt.Minute);
but this is collapsed and means that Json.NET is performing unnecessary conversions.
Is there a way to get only the string value of a JSON value?
Matt kline
source share