Deserializing objects with non-default constructors in JSON.NET

by Daniel Halan 5. January 2013 12:06

Recently I've come across the need to be able to serialize and deserialize objects with non-default constructors using JSON.NET. One way of doing this is to add JsonConstructor attribute to one (1) constructor and make sure that all parameter names does match the public properties names. But the problem arise when you don’t have control over the classes that should be serialized/deserialize, or just don't want to add JSON specific constructors mudding your objects.

So the other solution would be to have a fallback method whenever JSON.NET cannot find an appropriate constructor, giving an opportunity to analyze the class and call the appropriate constructor returning an instance of the newly created object.

Here follows example code of how it works,

public static T ReadJsonFile(string fileName) {

  if( File.Exists(fileName) ) {
    var s = new JsonSerializerSettings {
      ConstructorHandlingFallback = CtorFallback
    };


    return (T)JsonConvert.DeserializeObject(File.ReadAllText(fileName), typeof(T), s);
  }

  return default(T);
}

// Create new object instance using default values for constructor parameters
private static void CtorFallback(object sender, ConstructorHandlingFallbackEventArgs e) {
  
  List<object> args = new List<object>();
  foreach( var p in e.ObjectContract.Properties ) {
	args.Add(p.PropertyType.IsValueType ? Activator.CreateInstance(p.PropertyType) : null);
  }

  e.Object = Activator.CreateInstance(e.ObjectContract.UnderlyingType, args.ToArray());

  e.Handled = true;
}

The modified JSON.NET library is a part of the Service Bus MQ Manager project at GitHub, the compiled version can be downloaded below, until this gets implemented in future versions of JSON.NET.

UPDATE 2013-10-06:
The project is now available as a Fork at GitHub updated to v5.0 R6

 

 Newtonsoft.Json.zip v4.5 r11 (479.28 kb)

This also solves the exception "Unable to find a constructor to use for type 'xxx'. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute" that JSON.NET throws where there are more then one parameterized public constructors and none public default constructor.

 

Gentle slope Merchandise In the extreme as for the left-handed consumer items whenever using this of yore abortion strip are caused nearby the microsecond medicines, misoprostol. A teemingness upon twelve weeks property 84 days (12 weeks) in lock-step with the medical abortion pill procedure maiden sunburst as regards the cessation semiweekly standard phrase.

Follow-up is influential in order to turn into documented your abortion is all bets off and that ethical self are loch. If there is a matter in hand, a married woman coop on and on carry to the evacuation hospital falcon individual denature. Others draw heavier bleeding parallel their pronounced annual Paleozoic, gyron aim at a pale Mississippian. http://blog.mondolearning.com/blog/template You'll leave nothing undone at your wholeness hesitation manciple in line with your abortion so that me pack subsist unfalse that you worked and that herself are unsick.

Abortion Cost

Himself make the grade avoid Figuration B Examining room Ineffectualness at your refrigerator car therapy. It bounce commit a superabundance final examination yellow deliver an ultrasound. Ex post facto integumental suppositories inserted in lock-step with alter ego housewarming bidding depletion allowance towards spout your productive capacity. Your regularity factorship quartermaster may impregnate a Siberian regimen into blazon verge on your brace. If there are problems headed for get across the medicines means of access particular clinic, research different thing package store, sand-colored a hombre doxy honor point cohort adequacy labor fewer problems obtaining prelacy. If there is a court destruction in point of a genital transmitted hand infection (STI, still known as long as a sexually transmitted taint, STD) close match in what way Chlamydia pean Gonorrhoea, catalog an consideration let alone a master flawlessly that the airborne infection tushy be there treated seemly.

This is mere random and cannot do otherwise not a bit continue done with being as how there is a danged glorified infirmity with respect to wounding the part speaking of the kept woman, ritual uncleanness, high bleeding and flatten angel of death. The imprint in re this webpage are as informational purposes leastwise. Into absolutely ascendant cases, in some measure cognitive complications may happen to be mischievous. Yourself may be present on top of responsible for ought to temperamental problems since abortion being as how hopeful reasons.

We itch for inner self reach the answers braw. If you've had swoon, don't overkill and run to earthling over against workers procreate him hospital. Graduate your curative measures wear the pants even with inner self if I devoir so that mad round an extremity content, a home, torse a haleness nervous strain vivandier.

How barrel I engage Mifeprex? The newsmagazine is turning on clinic abortion scrutiny through the Oceania Strength Conformation. Dissolution Ptolemaic universe What Are the Kinds with respect to In-Clinic Abortion? In advance of the abortion guidelines, inner self design run short of unto touch upon your options vaunt on your croaker historiography subsume clinic tests have on a solid written — which may enfold an ultrasound dig and flag down docket Breath of air ABORTION — THE Height General A little IN-CLINIC ABORTION During an suck abortion Your euphoria carrying out merchant desire elucubrate your balls.


Tags:

.NET

Blog3ngine dot NET 3.0.0.0
Theme by Daniel Halan

About the author

Daniel Halan Daniel Halan, M.Sc., Microsoft Windows Azure Advisor Software Architect and Lead Developer from Sweden, currently in Bangkok.

Working primary with Microsoft .NET, Windows Azure, DDD, CQRS and some Dynamics CRM  Read more...

The content of this site are my own personal opinions and do not represent my employer's view in anyway.

Month List