2017-10-28 3 views
0

動的オブジェクトのことを知らないと考えると、クラスをインスタンス化することによって作成されたオブジェクトとJSON逆シリアル化(JsonConvert)フィールド?つまり、名前で一致する動的オブジェクトフィールドを更新したいと思います。JSON逆シリアル化後のオブジェクトと動的に作成されたオブジェクトの間のマッピング

これは私のサンプルコードです:

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<myVars>(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 => p.Name == sourceProp.Name).FirstOrDefault(); 
      if (targetProp != null && targetProp.GetType().Name == sourceProp.GetType().Name) 
      { 
       targetProp.SetValue(target, sourceProp.GetValue(source)); 
      } 
     } 
     return target; 
    } 
+2

あなたはこれまでに何を試しましたか? –

+3

質問に答えるための情報を追加する必要があります(例:おそらく?)。おそらく 'JObject'にも拡張されているように、'動的 'のために' 'AutoMapper'がサポートしているようです(https://github.com/AutoMapper/AutoMapper/wiki/Dynamic-and-ExpandoObject-Mapping) – StuartLC

+0

可能な[静的オブジェクトから動的オブジェクトを作成するには?](https://stackoverflow.com/questions/23156815/c-sharp-how-to-create-a-dynamic-object-from-a-static-object ) – derloopkat

答えて

関連する問題