36

I have the following serialized json object:

"{\"LineItems\":[{\"LineID\":1,\"QuoteID\":\"00000000-0000-0000-0000-000000000000\",\"Quantity\":\"1\",\"UnitPriceExTax\":\"2\",\"UnitPriceTaxRate\":\"2\",\"UnitPriceTaxAmt\":0,\"LineTotalExTax\":2,\"LineTotalTaxAmt\":0.040000000000000036,\"LineTotalIncTax\":2.04}],\"QuoteID\":[],\"CurrencyID\":\"2\",\"SupplierRef\":\"SDFSFSDF\",\"DeliveryDate\":\"22/02/2014\",\"QuoteAvailablityStartDate\":\"13/02/2014\",\"QuoteAvailablityEndDate\":\"09/02/2014\",\"OpeningComments\":\"WWSFSFS \",\"PricingComments\":\"XSDFSDF \",\"DeliveryComments\":\"SDFSFSDF SDFSFSF\",\"TermsComments\":\"SFSFSDF SDFSFSDF SDFS\",\"FreightExTax\":\"1\",\"FreightExTax2\":1,\"FreightTaxRate\":\"1\",\"FreightTaxAmt\":0.010000000000000009,\"FreightIncTax\":1.01,\"TotalLinesExTax\":2,\"TotalLinesTaxAmt\":0.040000000000000036,\"TotalExTax\":3,\"TotalTaxAmt\":0.050000000000000044,\"TotalIncTax\":3.05}"

One this is sent to the server I am trying to deserialize as follows:

var json = Request.RequestContext.HttpContext.Request.Params["EoiDraftModel"];
var ld = JsonConvert.DeserializeObject<EoiDraftViewModel>(json);

And Im hitting an error:

"Could not convert string to DateTime: 13/02/2014. Path 'DeliveryDate', line 1, position 323."

Since the date is valid I'm assuming its a problem with non-us format. In fact I know it is because if I do less than 13 for my days it deserializes just fine. So how do I indicate to deserializer to use non-us dates?

1

1 Answer 1

81

Try specifying the DateTime format specifically using an IsoDateTimeConverter, and pass it into the JsonConvert.DeserializeObject<>() method.

...
var json = Request.RequestContext.HttpContext.Request.Params["EoiDraftModel"];

var format = "dd/MM/yyyy"; // your datetime format
var dateTimeConverter = new IsoDateTimeConverter { DateTimeFormat = format };

var ld = JsonConvert.DeserializeObject<EoiDraftViewModel>(json, dateTimeConverter);
...
Sign up to request clarification or add additional context in comments.

1 Comment

Really helpful solution.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.