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>();
     }
 }
posted @ 2025-11-25 12:42  Hey,Coder!  阅读(3)  评论(0)    收藏  举报