c# newtonsoft dynamic
public static T JsonDeepTo<T>(this object obj)
{
switch (obj)
{
case null:
return default;
case JsonElement element:
var jsonStr = element.GetRawText();
var type = typeof(T);
if (type == typeof(object) || type == typeof(DynamicObject) || type.FullName == "System.Object")
{
dynamic meta = JsonConvert.DeserializeObject<System.Dynamic.ExpandoObject>(jsonStr);
return meta;
}
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
{
var meta = JsonConvert.DeserializeObject<List<ExpandoObject>>(jsonStr);
var result=meta.Cast<object>().ToList();
return (T)(object)result;
}
return JsonConvert.DeserializeObject<T>(element.GetRawText());
default:
return obj.ConvertTo<T>();
}
}
留待后查,同时方便他人
联系我:renhanlinbsl@163.com
联系我:renhanlinbsl@163.com

浙公网安备 33010602011771号