title: mapping between an object and a dynamically created object after JSON deserialization
body: <p>How do I do a mapping between an object created by instantiating a class and a dynamic object created by a JSON deserialization (JsonConvert) considering I don't know the dynamic object's fields? In other words, I'd like to update the dynamic object fields matching by name.</p>
  
  <p>This is my example code:</p>
  
  <pre><code>string json = {\"NDG\":7803, \"NumberOfNights\":2, \"Nome\":\"Ago\", \"Cognome\":\"Mar\", \"CognomeNome\":\"\"};
  string djson = ?? //I don't know the structure coming from a call as parameter but I know there are some json string identical fields  
  
  public class myVars
  {
      public string Userid { get; set; }
      public string Nome { get; set; }
      public string Cognome { get; set; }
      public string CognomeNome { get; set; }
  }
  
  myVars object1 = JsonConvert.DeserializeObject&lt;myVars&gt;(json);
  dynamic object2 = JObject.Parse(djson); // object2 contains a field named "CognomeNome"
  
  
  myVars.CognomeNome = myVars.Cognome + myVarsNome;
  MapObjects(object1 , object2);
  string rjson = JsonConvert.SerializeObject(object2); //returns {"CognomeNome":""}
  
  public static object MapObjects(object source, object target)
      {
          foreach (PropertyInfo sourceProp in source.GetType().GetProperties())
          {
              PropertyInfo targetProp = target.GetType().GetProperties().Where(p =&gt; p.Name == sourceProp.Name).FirstOrDefault();
              if (targetProp != null &amp;&amp; targetProp.GetType().Name == sourceProp.GetType().Name)
              {
                  targetProp.SetValue(target, sourceProp.GetValue(source));
              }
          }
          return target;
      }
  </code></pre>