初期のアイデア
以下は辞書シリアライザーです。空の文字列を受け入れないという1つの特殊なケースがあります。
private void SerializePerinatalModel<T>(IDictionary<string, object> dataModel, T perinatalModel)
{
Type sourceType = typeof(T);
foreach (PropertyInfo propInfo in (sourceType.GetProperties()))
{
if (dataModel.ContainsKey(propInfo.Name))
{
// if an empty string has been returned don't change the value
if (dataModel[propInfo.Name].ToNullSafeString() != String.Empty)
{
try
{
Type localType = propInfo.PropertyType;
localType = Nullable.GetUnderlyingType(localType) ?? localType;
propInfo.SetValue(perinatalModel, Convert.ChangeType(dataModel[propInfo.Name], localType), null);
}
catch (Exception e)
{
// ToDo: log update value errors
}
}
}
}
}
しかし、nullセーフにすることができます。null許容型を処理します。
JSONは本質的に辞書タイプであるため、トップレベルのタイプを反復処理することでそこに到達するはずです。
これは急いで書かれているので、アイデアのスケッチにすぎません。
より良いアイデア
また、使用してみてください
foreach (var item in JsonData.Where(m => m.Key.Substring(0,4) == "dict"))
{
// add item to collection
}
また、ビジネスを行う可能性があります。