using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; namespace PeisStart.Tests { class Program { public static T DeserializeObject(string data) where T : class { var obj = JsonConvert.DeserializeObject(data); return obj; } public static string SerializeObject(object data) { string str = JsonConvert.SerializeObject(data); return str; } static void Main(string[] args) { /* string strJson = @"{ 'patientinfo':{ 'patientRegisterId': '3a0c7f6e-3ff1-fef6-c568-6f541aabe87a', 'patientRegisterNo': '202307190001', 'patientName': '李晓阳 7', 'sexName': '未知', 'age': 46, 'idNo': '', 'mobileTelephone': '13800138000', 'patientNo': '6', 'medicalTimes': 1, 'jobCardNo': '', 'medicalCardNo': '', 'customerOrgName': '个人体检', 'departmentName': '个人体检', 'customerOrgGroupName': '', 'medicalPackageName': '', 'personnelTypeName': '', 'medicalCenterAddress': '', 'medicalCenterTelphone': '', 'medicalCenterFax': '' }, 'asbitemlist': [ { 'guideName': '检验项目', 'displayOrder0': 1, 'asbitemName': '血常规', 'asbitemGuide': '1号楼2层采血窗口', 'displayOrder': 30 }, { 'guideName': '一般检查', 'displayOrder0': 2, 'asbitemName': '血压', 'asbitemGuide': '1号楼2-202', 'displayOrder': 6 }, { 'guideName': '一般检查', 'displayOrder0': 2, 'asbitemName': '身高体重', 'asbitemGuide': '1号楼2-201', 'displayOrder': 22 } ] }"; patientinfo patinfo = new patientinfo() { patientRegisterId = "3a0c7f6e-3ff1-fef6-c568-6f541aabe87a", patientRegisterNo = "202307190001", patientName = "李晓阳 7", sexName = "未知", age = 46, idNo = "", mobileTelephone = "13800138000", patientNo = "6", medicalTimes = 1, jobCardNo = "", medicalCardNo = "", customerOrgName = "个人体检", departmentName = "个人体检", customerOrgGroupName = null, medicalPackageName = null, personnelTypeName = null, medicalCenterAddress = "", medicalCenterTelphone = "", medicalCenterFax = "" }; List alist = new List(); asbitem a1 = new asbitem() { guideName = "检验项目", displayOrder0 = 1, asbitemName = "血常规", asbitemGuide = "1号楼2层采血窗口", displayOrder = 30 }; alist.Add(a1); asbitem a2 = new asbitem() { guideName = "一般检查", displayOrder0 = 2, asbitemName = "血压", asbitemGuide = "1号楼2-202", displayOrder = 6 }; alist.Add(a2); asbitem a3 = new asbitem() { guideName = "一般检查", displayOrder0 = 2, asbitemName = "身高体重", asbitemGuide = "1号楼2-201", displayOrder = 22 }; alist.Add(a3); List listp = new List(); para p1 = new para() { Name = "hospName", Value = "XX第一人民医院" }; listp.Add(p1); para p2 = new para() { Name = "printer", Value = "张打印人" }; listp.Add(p2); JsonCls cls = new JsonCls() { patientinfo = patinfo, asbitemlist = alist }; JsonClsEx ex = new JsonClsEx() { ReportCode = "001", token = "1223423423", ReportTable = cls, Parameters=listp }; // JsonCls js = DeserializeObject(strJson); // string aa=js.patientinfo.ToString(); // string a1 = SerializeObject(js.patientinfo); string a6 = SerializeObject(ex); List plist = new List(); plist.Add(cls.patientinfo); string a7 = SerializeObject(plist); DataTable dt = DeserializeObject(a7); */ //zydjsontest(); dynamicType dType = new dynamicType(); dType.asMessage = @"{'ReportCode':'0001','token':'eyJhbGciOiJSUzI1NiIsImtpZCI6IkJDQUMwNkNFQjJFMDIwMDQwRTZGQzI5N0FDNUM4RUZBQzU1NTMzN0YiLCJ4NXQiOiJ2S3dHenJMZ0lBUU9iOEtYckZ5Ty1zVlZNMzgiLCJ0eXAiOiJhdCtqd3QifQ.eyJzdWIiOiIzYTBjNDE4MC0xMDdjLTBjODktYjI1Yi0wYmQzNDY2NmRjZWMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiYWRtaW5AYWJwLmlvIiwicm9sZSI6ImFkbWluIiwiZ2l2ZW5fbmFtZSI6ImFkbWluIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjoiRmFsc2UiLCJlbWFpbF92ZXJpZmllZCI6IkZhbHNlIiwidW5pcXVlX25hbWUiOiJhZG1pbiIsIm9pX3Byc3QiOiJQZWlzX0FwcCIsIm9pX2F1X2lkIjoiM2EwZDI3Y2EtNjYzOC1lMmMzLTllMDItMDc4MjRkMjgyMTg0IiwiY2xpZW50X2lkIjoiUGVpc19BcHAiLCJvaV90a25faWQiOiIzYTBkMjdjYS02NjNjLTY5YTYtYjI2ZS00ZmUyM2FhNGZjNWEiLCJhdWQiOiJQZWlzIiwic2NvcGUiOiJQZWlzIG9mZmxpbmVfYWNjZXNzIiwiZXhwIjoxNjkyNTg2OTYxLCJpc3MiOiJodHRwOi8vMTQwLjE0My4xNjIuMzk6OTUyOS8iLCJpYXQiOjE2OTI1Nzk3NjF9.OP7WKVGBn0WlFZcgRoTe6lVDfRFTp3P35dEDlGsMLBqiCnxaBckWtKmWUOboyINbac14YdPgqtSC_cETUy_kYhLTvc6h7WnFGgD70Wql7NtXVIFWBicn4SjIKCKyzO-0QYz08XODqMcw5mgPNPakUcFiUQtFdGkd8VoYkmFWkAVBUAyjIWC0IVnQM8KNPnZnzwLv4O8HwVnWkiiNkYtioDzdo8SN00TM8oJHcArJjPQnNsnRu-xBSAldhTWKQhekLT6-g206dl1Ufq1Ms4pts6fWKFvECVEgrq1hgUi8NPZJLqKq2h6EWEHSU2Z5bv_WoTtF0uIfQTqJIz6xEdNbMA','Parameters':[{'Name':'printer','Value':'admin'},{'Name':'hisLog','Value':'UpLoad/3a0c7f6e-3ff1-fef6-c568-6f541aabe87a.png'}],'ReportTable':{'patientRegisterId':'3a0c7f6e-3ff1-fef6-c568-6f541aabe87a','patientRegisterNo':'202307190001','customerOrgShortName':'XXXXdanwei','patientName':'李晓阳 7','photo':'http://140.143.162.39:9529/UpLoad/3a0c7f6e-3ff1-fef6-c568-6f541aabe87a.png','sexName':'未知','age':46,'medicalStartDate':'2023-07-25','idNo':'','mobileTelephone':'13800138000','patientNo':'6','medicalTimes':1,'jobCardNo':'','medicalCardNo':'','customerOrgName':'个人体检','departmentName':'个人体检','customerOrgGroupName':null,'medicalPackageName':null,'personnelTypeName':null,'medicalCenterAddress':'','medicalCenterTelphone':'','medicalCenterFax':'','detail':[{'guideName':'检验项目','asbitemCount':1,'displayOrder':1,'detail_Name':[{'asbitemName':'血常规','asbitemGuide':'1号楼2层采血窗口','displayOrder':30}]},{'guideName':'一般检查','asbitemCount':2,'displayOrder':2,'detail_Name':[{'asbitemName':'血压','asbitemGuide':'1号楼2-202','displayOrder':6},{'asbitemName':'身高体重','asbitemGuide':'1号楼2-201','displayOrder':22}]},{'guideName':'功能检查','asbitemCount':2,'displayOrder':3,'detail_Name':[{'asbitemName':'腰椎正位片','asbitemGuide':'1号楼3层放射科','displayOrder':15},{'asbitemName':'胸部正位片','asbitemGuide':'1号楼3层放射科','displayOrder':17}]}]}}"; dType.asApiUrl = "http://140.143.162.39:9529"; dType.asWebUrl = "http://140.143.162.39:8081/"; ReportMethods met = new ReportMethods(); dynamic msg = dType; met.PrintPre(msg); } static void zydjsontest() { string str=@"{ 'patientRegisterId': '3a0c7f6e-3ff1-fef6-c568-6f541aabe87a', 'patientRegisterNo': '202307190001', 'patientName': '李晓阳 7', 'sexName': '未知', 'age': 46, 'idNo': '', 'mobileTelephone': '13800138000', 'patientNo': '6', 'medicalTimes': 1, 'jobCardNo': '', 'medicalCardNo': '', 'customerOrgName': '个人体检', 'departmentName': '个人体检', 'customerOrgGroupName': null, 'medicalPackageName': null, 'personnelTypeName': null, 'medicalCenterAddress': '', 'medicalCenterTelphone': '', 'medicalCenterFax': '', 'detail': [ { 'guideName': '检验项目', 'displayOrder': 1, 'detail_Name': [ { 'asbitemName': '血常规', 'asbitemGuide': '1号楼2层采血窗口', 'displayOrder': 30 } ] }, { 'guideName': '一般检查', 'displayOrder': 2, 'detail_Name': [ { 'asbitemName': '血压', 'asbitemGuide': '1号楼2-202', 'displayOrder': 6 }, { 'asbitemName': '身高体重', 'asbitemGuide': '1号楼2-201', 'displayOrder': 22 } ] }, { 'guideName': '功能检查', 'displayOrder': 3, 'detail_Name': [ { 'asbitemName': '腰椎正位片', 'asbitemGuide': '1号楼3层放射科', 'displayOrder': 15 }, { 'asbitemName': '胸部正位片', 'asbitemGuide': '1号楼3层放射科', 'displayOrder': 17 } ] } ] }"; zyd dj = DeserializeObject(str); patientinfo pat = new patientinfo() { patientRegisterId = dj.patientRegisterId, patientRegisterNo = dj.patientRegisterNo, patientName = dj.patientName, sexName = dj.sexName, age = dj.age, idNo = dj.idNo, mobileTelephone = dj.mobileTelephone, patientNo = dj.patientNo, medicalTimes = dj.medicalTimes, jobCardNo = dj.jobCardNo, medicalCardNo = dj.medicalCardNo, customerOrgName = dj.customerOrgName, departmentName = dj.departmentName, customerOrgGroupName = dj.customerOrgGroupName, medicalPackageName = dj.medicalPackageName, personnelTypeName = dj.personnelTypeName, medicalCenterAddress = dj.medicalCenterAddress, medicalCenterTelphone = dj.medicalCenterTelphone, medicalCenterFax = dj.medicalCenterFax }; List plist = new List(); plist.Add(pat); List glist = new List(); List alist = new List(); foreach(var item in dj.detail) { guide ig = new guide() { guideName = item.guideName, displayOrder = item.displayOrder }; foreach(var d1 in item.detail_Name) { asbitem asb = new asbitem() { guideName=ig.guideName, asbitemGuide = d1.asbitemGuide, asbitemName = d1.asbitemName, displayOrder = d1.displayOrder }; alist.Add(asb); } glist.Add(ig); } List dlist = new List(); foreach (var item in plist) dlist.Add(item); foreach (var item in glist) dlist.Add(item); foreach (var item in alist) dlist.Add(item); JsonClsEx ex = new JsonClsEx() { ReportCode = "001", token = "1223423423", ReportTable = dlist }; //string a6 = SerializeObject(ex); //JsonClsEx ee = DeserializeObject(a6); //DataSet ds = ConvertToDataSet(ee.ReportTable); //FastReport.Report report = new FastReport.Report(); //report.RegisterData(ds); //report.Design(); } //List转DataSet public static DataSet ConvertToDataSet(IList list) { if (list == null || list.Count <= 0) { return null; } DataSet ds = new DataSet(); DataTable dt = new DataTable(typeof(T).Name); DataColumn column; DataRow row; System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); foreach (T t in list) { if (t == null) { continue; } row = dt.NewRow(); for (int i = 0, j = myPropertyInfo.Length; i < j; i++) { System.Reflection.PropertyInfo pi = myPropertyInfo[i]; string name = pi.Name; if (dt.Columns[name] == null) { column = new DataColumn(name, pi.PropertyType); dt.Columns.Add(column); } row[name] = pi.GetValue(t, null); } dt.Rows.Add(row); } ds.Tables.Add(dt); return ds; } //DataTable转List public static List GetList(DataTable table) { List list = new List(); //T t = default(T); //PropertyInfo[] propertypes = null; //string tempName = string.Empty; //foreach (DataRow row in table.Rows) //{ // t = Activator.CreateInstance(); // propertypes = t.GetType().GetProperties(); // foreach (PropertyInfo pro in propertypes) // { // tempName = pro.Name; // if (table.Columns.Contains(tempName)) // { // object value = row[tempName]; // if (!value.ToString().Equals("")) // { // pro.SetValue(t, value, null); // } // } // } // list.Add(t); //} return list.Count == 0 ? null : list; } } }