13

I have globally explicitly configured my MVC4 app to use the JSON.NET serializer . I know i have the choice of using the ISO standard dates or the old Microsoft date format when serializing dates.

But how can i output my own custom dateTime format string ,like :"dd/MM/yyyy hh:mm".

I could do this in MVC3 when plugging in Json.NET as the default serializer but cant seem to do it in MVC4 .

So far in the application_start i have done :

 var settings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings; 
 JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings()
 {
 Formatting = Formatting.Indented,
 DateTimeZoneHandling = DateTimeZoneHandling.Utc,
 };
 jSettings.Converters.Add(new MyDateTimeConvertor() );
 settings = jSettings;

and the custom converter i tried to impliment is like so :

 public class MyDateTimeConvertor : DateTimeConverterBase
 {
 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
 {
 return DateTime.Parse(reader.Value.ToString());
 }
 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
 {
 writer.WriteValue(((DateTime)value).ToString("dd/MM/yyyy hh:mm"));
 }
 }

Anyhelp would be appreciated :)

j0k
22.8k28 gold badges81 silver badges90 bronze badges
asked Oct 12, 2012 at 10:12
1
  • Keep in mind the root of your issue here is you did not assign jSettings to GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings. Instead you assigned it to "settings", which is a local variable. Commented Mar 9, 2020 at 19:03

2 Answers 2

22

Change your setting set up code like this:

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
JsonSerializerSettings jSettings = new Newtonsoft.Json.JsonSerializerSettings() 
{
 Formatting = Formatting.Indented,
 DateTimeZoneHandling = DateTimeZoneHandling.Utc
};
jSettings.Converters.Add(new MyDateTimeConvertor());
jsonFormatter.SerializerSettings = jSettings;

In your code you are just changing local variable value.

answered Oct 12, 2012 at 11:25
1
  • so i was assigning the the newly configured Jsonserializersettings to serializer settings instead of its parent jsonFormatter??....hmmm quite a lot of it was guess work tbh, but thankyou for your help :) Commented Oct 12, 2012 at 12:07
0

Thanks, I was going crazy, this worked very well for me,paste this in the Global.asax.cs

JsonMediaTypeFormatter jsonFormatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
JsonSerializerSettings jSettings =...

create a class MyDateTimeConvertor, paste this in the class

public class MyDateTimeConvertor : DateTimeConverterBase
{
 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
 {
 return DateTime...

wep api mvc4, web services, custom date format.

answered Aug 28, 2013 at 21:25

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.