VB.NET解析表单JSON字符串批量写入SQL表的技术咨询
当然可以直接把JSON字符串转换成对应的.NET对象集合,之后就能轻松循环每个条目写入SQL表啦!我给你梳理一下具体的实现步骤和代码示例,基于你提到的JavaScriptSerializer来做:
解析JSON并写入SQL表的实现方案
1. 先定义匹配JSON结构的模型类
首先得明确你收集的每个条目是什么结构,比如假设你的JSON是一个对象数组,每个条目包含Id、Content、CreateTime字段,那先定义一个类来对应这个结构:
public class ListItem { public int Id { get; set; } public string Content { get; set; } public DateTime CreateTime { get; set; } }
注意:类的属性名称要和JSON里的键完全一致(大小写也要对应),如果JSON键和属性名不一样,可以用特性映射,但JavaScriptSerializer默认是按名称匹配的。
2. 用JavaScriptSerializer解析JSON字符串
接下来把textarea提交的JSON字符串反序列化成对象集合,代码示例如下:
using System.Web.Script.Serialization; // 必须引用这个命名空间 // 假设表单提交的JSON字符串存在这个变量里 string jsonFromTextarea = Request.Form["yourTextareaName"]; var serializer = new JavaScriptSerializer(); List<ListItem> items = null; try { // 直接将JSON字符串转换为对象列表 items = serializer.Deserialize<List<ListItem>>(jsonFromTextarea); } catch (ArgumentException ex) { // 处理JSON格式错误的情况,比如给前端返回提示 Response.Write("JSON格式不正确:" + ex.Message); return; }
3. 循环条目写入SQL表
拿到对象集合后,就可以循环每个条目,用ADO.NET插入到SQL表中。这里用参数化查询,能有效防止SQL注入:
using System.Data.SqlClient; // 替换成你的数据库连接字符串 string connectionString = "Server=你的服务器地址;Database=你的数据库名;User Id=账号;Password=密码;"; using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); string insertSql = "INSERT INTO YourTableName (Id, Content, CreateTime) VALUES (@Id, @Content, @CreateTime)"; foreach (var item in items) { using (SqlCommand cmd = new SqlCommand(insertSql, conn)) { cmd.Parameters.AddWithValue("@Id", item.Id); cmd.Parameters.AddWithValue("@Content", item.Content); cmd.Parameters.AddWithValue("@CreateTime", item.CreateTime); cmd.ExecuteNonQuery(); } } }
小补充:如果你的JSON结构更复杂(比如嵌套对象),只要对应的模型类也嵌套定义就行,JavaScriptSerializer能处理大部分常见的JSON结构。另外,要是你用的是.NET Core或.NET 5+,其实更推荐用System.Text.Json或者Newtonsoft.Json,不过你指定了JavaScriptSerializer,上面的代码在.NET Framework环境下完全可用。
内容的提问来源于stack exchange,提问作者cpt-crunchy
相关产品推荐
相关产品推荐

