舉個栗子,代碼及注釋如下
class Program
{
static void Main(string[] args)
{
// 反射示例
string strjson = "[{\"name\":\"deas\",\"str\":\"male\",\"age\":15,\"bol\":true,\"id\":\"49f6eeb9-6fe9-487f-80c0-2ef1946ce1c3\",\"dt\":\"2020-12-09T11:13:42.8016838+08:00\",\"ffr\":{\"xxj\":\"120\",\"bolxxj\":\"true\"}},{\"name\":\"qeer\",\"str\":\"uyiu\",\"age\":18,\"bol\":false,\"id\":\"cef445cc-ba64-423e-b8a8-2d99f53eaf23\",\"dt\":\"2020-12-09T11:13:42.8056737+08:00\",\"ffr\":{\"xxj\":\"330\",\"bolxxj\":\"false\"}},{\"name\":\"zcvc\",\"str\":\"nbbn\",\"age\":25,\"bol\":true,\"id\":\"751852e7-1d12-44c6-a1c8-0a23263db111\",\"dt\":\"2020-12-09T11:13:42.8056737+08:00\",\"ffr\":{\"xxj\":\"550\",\"bolxxj\":\"true\"}},{\"name\":\"efvv\",\"str\":\"tynm\",\"age\":26,\"bol\":false,\"id\":\"083678c5-4c36-48f2-ba2a-778aaacc433b\",\"dt\":\"2020-12-09T11:13:42.8056737+08:00\",\"ffr\":{\"xxj\":\"670\",\"bolxxj\":\"false\"}}]";
List<Cler> clersList = JsonConvert.DeserializeObject<List<Cler>>(strjson);// 序列化JSON字符串
foreach (Cler cl in clersList)// by 每個對象Cler循環
{
Cler cler = new Cler(cl.name, cl.str, cl.age, cl.bol, cl.id, cl.dt, cl.ffr);// 實例化 調用構造函數為變量賦值
Type tcler = cler.GetType();// 獲取當前實例的Type
PropertyInfo[] pi_cler = tcler.GetProperties();// 取得public修飾的對象屬性數組(就是有很多很多對象,每個對象為一個元素)
foreach (PropertyInfo pi in pi_cler)// 循環取得每個元素的Type屬性
{
Console.WriteLine();
Console.WriteLine(pi.PropertyType.Name);// 字段類型 String/Int32/Boolean/Guid/DateTime/FFR
Console.WriteLine(pi.Name);// 對象名
Console.WriteLine(pi.GetValue(cler));// 對象的值
if (pi.PropertyType.Name == "FFR")
{
string ffrstr = JsonConvert.SerializeObject(pi.GetValue(cler));// 將FFR中的對象轉換為JSON字符串
FFR ffrjson = JsonConvert.DeserializeObject<FFR>(ffrstr);// 再將JSON序列化為FFR對象,這樣就將Object對象轉換為了FFR對象(拆箱操作)
Console.WriteLine(ffrjson.xxj);// 取得FFR.xxj的值
Console.WriteLine(ffrjson.bolxxj);//FFR.bolxxj的值
}
Console.WriteLine();
}
}
Console.ReadKey();
}
static string FunTtu(string str)
{
Console.WriteLine("線程ID:" + Thread.CurrentThread.ManagedThreadId.ToString());
return "FunTtu-" + str;
}
}
class Cler
{
public string name { get; set; }
public string str { get; set; }
public int age { get; set; }
public bool bol { get; set; }
public Guid id { get; set; }
public DateTime dt { get; set; }
public FFR ffr { get; set; }
public Cler(string str_name, string str_str, int str_age, bool str_bol, Guid str_id, DateTime str_dt, FFR str_ffr)
{
name = str_name;
str = str_str;
age = str_age;
bol = str_bol;
id = str_id;
dt = str_dt;
ffr = str_ffr;
}
}
class FFR
{
public int xxj { get; set; }
public bool bolxxj { get; set; }
}