使用Newtonsoft.NET将JSON数组转化成C#匿名类集合

如何使用Newtonsoft.NET将JSON数组转化成C#匿名类集合?

使用Newtonsoft.NET将JSON数组转化成C#匿名类集合

			var url = "";
            var patientMsg = await httpClient.
            GetStringAsync($"{url}?BingQuDM=1");
            //1.转义后的Json 字符串
            patientMsg = "{\"Rows\":[{\"DeptCode\":\"1001\",\"BedNum\":\"001\",\"PatientName\":\"卞肇琪\",\"PatientSex\":\"女\",\"PatientAge\":22,\"NursingGrade\":\"三级护理\",\"DietAndRisk\":\"流性食物/留置导尿/记尿量\",\"TempBaseId\":null,\"TempStickId\":null,\"HBRId\":null,\"InfusionId\":null,\"DropRate\":null,\"Temperature\":null,\"HeartRate\":null}]}";
           //2.按照接口请求过来的Json字符串格式来声明的一个匿名对象
            var patientAnonymous = new { Rows = new[] { 
            new { BingRenZYID = "", BingRenID = "", 
            ChuangWeiHao = "", XingMing = "", XingBie = "",
             NianLing = "", HuLiDJ = "", RuYuanSJ = "", 
             ZhuYuanCS = "", ChuYuanSJ = "",
              Description="", MattressNo="" } } };
            //3.利用DeserializeAnonymousType方法
            //把Json字符串转成匿名类型的集合
            var patientList = JsonConvert.DeserializeAnonymousType(patientMsg,
             patientAnonymous).Rows.ToList();
            //4.可以不看,有需要可以看 把匿名对象的集合通过反射转为dynamic 的集合
            // 是因为下面我有需要对这个匿名对象集合的子项进行赋值的操作,
            //匿名对象的属性本身不支持赋值的操作,所以把它转为dynamic类型的
            List<dynamic> set = new List<dynamic>();
            foreach (var p in patientList)
            {
              var pros=  p.GetType().GetProperties(BindingFlags.Public
               | BindingFlags.Instance);
                var d = new ExpandoObject();
                foreach (var ps in pros)
                {
                    //eg:d.BingRenID = ps.BingRenID;
                    (d as IDictionary<string, dynamic>)
                    .Add(ps.Name, ps.GetValue(p, null));
                }
                set.Add(d);
            }
            
            
//第二种 直接转为dynamic类型的 因为是动态类型 所以vs 没有智能提示
            string hj = "{\"Rows\":[{\"DeptCode\":\"1001\",\"BedNum\":\"001\",\"PatientName\":\"卞肇琪\",\"PatientSex\":\"女\",\"PatientAge\":22,\"NursingGrade\":\"三级护理\",\"DietAndRisk\":\"流性食物/留置导尿/记尿量\",\"TempBaseId\":null,\"TempStickId\":null,\"HBRId\":null,\"InfusionId\":null,\"DropRate\":null,\"Temperature\":null,\"HeartRate\":null},{\"DeptCode\":\"1001\",\"BedNum\":\"001\",\"PatientName\":\"卞肇琪\",\"PatientSex\":\"女\",\"PatientAge\":22,\"NursingGrade\":\"三级护理\",\"DietAndRisk\":\"流性食物/留置导尿/记尿量\",\"TempBaseId\":null,\"TempStickId\":null,\"HBRId\":null,\"InfusionId\":null,\"DropRate\":null,\"Temperature\":null,\"HeartRate\":null}]}";
            dynamic json = Newtonsoft.Json.Linq.JToken.Parse(hj) as dynamic;
            foreach (var item in json)
            {
                Console.WriteLine($"count:{item.PatientName},no:{item.PatientAge}");
            }
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
.NET中将JSON数组数据写入数据库,可以按照以下步骤进行操作: 1. 解析JSON数据:首先,需要使用JSON库(如Newtonsoft.Json)来解析JSON数组数据。可以使用`JsonConvert.DeserializeObject`方法将JSON字符串换为.NET对象,或者使用`JArray.Parse`将JSON数组解析为JArray对象。 2. 连接数据库:接下来,需要建立与数据库的连接。可以使用.NET提供的数据访问技术(如ADO.NET)来连接到目标数据库。根据具体的数据库类型,可以选择使用合适的连接器或驱动程序。 3. 遍历JSON数组并插入数据库:通过遍历JSON数组,可以获取数组中每个元素的数据,并将其插入数据库。可以使用SQL语句或ORM框架(如Entity Framework)来执行插入操作。 4. 关闭数据库连接:在插入完所有数据后,应该关闭数据库连接,以释放资源和确保数据的一致性。 下面是一个简单示例,演示如何将JSON数组数据写入数据库(以使用SQLite数据库为例): ```csharp using System; using System.Data.SQLite; using Newtonsoft.Json; using Newtonsoft.Json.Linq; // 解析JSON数组数据 string jsonData = "[{\"name\":\"John\",\"age\":30},{\"name\":\"Jane\",\"age\":25}]"; JArray jsonArray = JArray.Parse(jsonData); // 连接到SQLite数据库 using (SQLiteConnection connection = new SQLiteConnection("Data Source=mydatabase.db;Version=3;")) { connection.Open(); // 遍历JSON数组并插入数据库 foreach (JObject item in jsonArray) { string name = item["name"].ToString(); int age = Convert.ToInt32(item["age"]); // 执行插入操作 using (SQLiteCommand command = new SQLiteCommand("INSERT INTO Users (Name, Age) VALUES (@Name, @Age)", connection)) { command.Parameters.AddWithValue("@Name", name); command.Parameters.AddWithValue("@Age", age); command.ExecuteNonQuery(); } } // 关闭数据库连接 connection.Close(); } ``` 以上代码示例了如何将JSON数组数据(包含"name"和"age"字段)写入到名为"Users"的SQLite数据库表中。实际上,根据具体的数据库和数据结构,可以进行相应的调整和优化。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值