C#处理json数据插入到数据库的方法,分数不多了请达人海涵

一速微光 2017-09-29 10:12:43
数据格式如下:
[
{
"Indicator":"Life expectancy at birth (years)",
"PUBLISH STATES":"Published",
"Year":1990,
"WHO region":"Europe",
"World Bank income group":"High-income",
"Country":"Andorra",
"Sex":"Both sexes",
"Display Value":77,
"Numeric":77.00000,
"Low":"",
"High":"",
"Comments":""
},
{
"Indicator":"Life expectancy at birth (years)",
"PUBLISH STATES":"Published",
"Year":2000,
"WHO region":"Europe",
"World Bank income group":"High-income",
"Country":"Andorra",
"Sex":"Both sexes",
"Display Value":80,
"Numeric":80.00000,
"Low":"",
"High":"",
"Comments":""
},
{
"Indicator":"Life expectancy at age 60 (years)",
"PUBLISH STATES":"Published",
"Year":2012,
"WHO region":"Europe",
"World Bank income group":"High-income",
"Country":"Andorra",
"Sex":"Female",
"Display Value":28,
"Numeric":28.00000,
"Low":"",
"High":"",
"Comments":""
},
{
"Indicator":"Life expectancy at age 60 (years)",
"PUBLISH STATES":"Published",
"Year":2000,
"WHO region":"Europe",
"World Bank income group":"High-income",
"Country":"Andorra",
"Sex":"Both sexes",
"Display Value":23,
"Numeric":23.00000,
"Low":"",
"High":"",
"Comments":""
}
]

这些数据要定期插入到本地的sqlserver数据库里的一张表里面去,格式如下(字段基本和Json数据的Key一致)。
字段:Indicator PUBLISHSTATES Year WHOregion" WBIG Country Sex Display Numeric Low high Comments
请帮忙怎么实现?

分数不多了,和请达人海涵
...全文
1557 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
SP12345678902 2017-10-10
  • 打赏
  • 举报
回复
定义实体类xxxxObject var query = Newtonsoft.Json.JsonConvert.DeserializeObject<xxxxObject>(json); 则query就是已经序列化好的list数据。循环插入数据库即可。 记得引用Newtonsoft.Json.dll
一速微光 2017-10-10
  • 打赏
  • 举报
回复
引用 5 楼 hanjun0612 的回复:
这个json数组直接序列化成List<model>对象,然后插入数据库
static void Main(string[] args) { string result = null; Stream stream; StreamReader reader = null; SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=127.0.0.1;User ID=dev;Password=111111;Initial Catalog=PipenetCentral"; WebClient clinet = new WebClient(); stream = clinet.OpenRead(@"http://192.168.10.24/stations.json"); reader = new StreamReader(stream, Encoding.Default); result = reader.ReadToEnd(); parjson obj = (parjson)JsonConvert.DeserializeObject(result, typeof(parjson)); Console.WriteLine("{0},{1},{2},{3}", obj.Response[0].sn, obj.Response[0].divisions,obj.Response[0].positions[0],obj.Response[0].positions[1]); Console.ReadLine(); } 谢谢楼上各位的帮忙,找了些资料。用序列化可以读出数据了。现在的问题是只能读出来一条数据,肯定要加一个循环了,这个循环要怎么加进去呢?
一速微光 2017-10-10
  • 打赏
  • 举报
回复
引用 8 楼 hanjun0612 的回复:
[quote=引用 7 楼 lang1382080 的回复:] [quote=引用 3 楼 xdashewan 的回复:] json反序列化成类对象,然后执行sql插入数据库
不知道怎么写呀,都提到了序列化,还有newtojson等, 因为我这个以后是要用到ssis包里面去的[/quote] 网上搜一下 newtonsoft。你就知道了。 [/quote] static void Main(string[] args) { string result = null; Stream stream; StreamReader reader = null; SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=127.0.0.1;User ID=dev;Password=111111;Initial Catalog=PipenetCentral"; WebClient clinet = new WebClient(); stream = clinet.OpenRead(@"http://192.168.10.24/stations.json"); reader = new StreamReader(stream, Encoding.Default); result = reader.ReadToEnd(); parjson obj = (parjson)JsonConvert.DeserializeObject(result, typeof(parjson)); Console.WriteLine("{0},{1},{2},{3}", obj.Response[0].sn, obj.Response[0].divisions,obj.Response[0].positions[0],obj.Response[0].positions[1]); Console.ReadLine(); } 谢谢楼上各位的帮忙,找了些资料。用序列化可以读出数据了。现在的问题是只能读出来一条数据,肯定要加一个循环了,这个循环要怎么加进去呢?
引用 8 楼 hanjun0612 的回复:
[quote=引用 7 楼 lang1382080 的回复:] [quote=引用 3 楼 xdashewan 的回复:] json反序列化成类对象,然后执行sql插入数据库
不知道怎么写呀,都提到了序列化,还有newtojson等, 因为我这个以后是要用到ssis包里面去的[/quote] 网上搜一下 newtonsoft。你就知道了。 [/quote]
引用 8 楼 hanjun0612 的回复:
[quote=引用 7 楼 lang1382080 的回复:] [quote=引用 3 楼 xdashewan 的回复:] json反序列化成类对象,然后执行sql插入数据库
不知道怎么写呀,都提到了序列化,还有newtojson等, 因为我这个以后是要用到ssis包里面去的[/quote] 网上搜一下 newtonsoft。你就知道了。 [/quote]
引用 13 楼 HHHZZZYYY1994 的回复:
序列化成一个类,再插入
static void Main(string[] args) { string result = null; Stream stream; StreamReader reader = null; SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source=127.0.0.1;User ID=dev;Password=111111;Initial Catalog=PipenetCentral"; WebClient clinet = new WebClient(); stream = clinet.OpenRead(@"http://192.168.10.24/stations.json"); reader = new StreamReader(stream, Encoding.Default); result = reader.ReadToEnd(); parjson obj = (parjson)JsonConvert.DeserializeObject(result, typeof(parjson)); Console.WriteLine("{0},{1},{2},{3}", obj.Response[0].sn, obj.Response[0].divisions,obj.Response[0].positions[0],obj.Response[0].positions[1]); Console.ReadLine(); } 谢谢楼上各位的帮忙,找了些资料。用序列化可以读出数据了。现在的问题是只能读出来一条数据,肯定要加一个循环了,这个循环要怎么加进去呢?
闲游四疯 2017-10-10
  • 打赏
  • 举报
回复
parjson obj = (parjson)JsonConvert.DeserializeObject(result, typeof(parjson)); 改成 List<parjson> obj = (List<parjson>)JsonConvert.DeserializeObject(result, typeof(List<parjson>));
好的哦 2017-09-30
  • 打赏
  • 举报
回复
json反序列化 搜json转List<model>
qq_39467095 2017-09-30
  • 打赏
  • 举报
回复
准备工作: 1、添加引用System.Web.Extensions, 2、.net3.5+版本都有,如果VS2010找不到,在这个文件夹找:C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\ 3、再using System.Web.Script.Serialization;即可 然后构建实体类,实体类应该会弄吧这里就不说了。 然后调用这个方法 : /// <summary> /// json反序列化(非二进制方式) /// </summary> /// <typeparam name="T">实体类</typeparam> /// <param name="jsonString"></param> /// <returns></returns> public static T JsonDeserialize<T>(string jsonString) { JavaScriptSerializer jsonSerialize = new JavaScriptSerializer(); return jsonSerialize.Deserialize<T>(jsonString); }
ou108 2017-09-30
  • 打赏
  • 举报
回复
引用 9 楼 lang1382080 的回复:
[quote=引用 3 楼 xdashewan 的回复:] json反序列化成类对象,然后执行sql插入数据库
刚写c#,可不可以对我这部分数据给个框架出来呢? [/quote] 楼主不会用实体类保存,难道datatable保存也不会? 那你百度一大堆资料啊。 实体类,tablet等批量保存技术。比如sqlbulkcopy 又比如datable: DataTable dt = sqlDataObj as DataTable; string sql = "SELECT TOP 0 * FROM [" + dt.TableName + "]"; SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sql, sqlConnection); if (dataUpdate.UseTransaction) sqlDataAdapter.SelectCommand.Transaction = sqlTransaction; SqlCommandBuilder builder = new SqlCommandBuilder(sqlDataAdapter); builder.ConflictOption = ConflictOption.CompareRowVersion; builder.SetAllValues = true; sqlDataAdapter.InsertCommand = builder.GetInsertCommand(true); sqlDataAdapter.UpdateCommand = builder.GetUpdateCommand(true); sqlDataAdapter.DeleteCommand = builder.GetDeleteCommand(true); if (dataUpdate.UseTransaction) { sqlDataAdapter.DeleteCommand.Transaction = sqlTransaction; sqlDataAdapter.UpdateCommand.Transaction = sqlTransaction; sqlDataAdapter.InsertCommand.Transaction = sqlTransaction; } sqlDataAdapter.Update(dt);
  • 打赏
  • 举报
回复
序列化成一个类,再插入
正怒月神 2017-09-29
  • 打赏
  • 举报
回复
引用 7 楼 lang1382080 的回复:
[quote=引用 3 楼 xdashewan 的回复:] json反序列化成类对象,然后执行sql插入数据库
不知道怎么写呀,都提到了序列化,还有newtojson等, 因为我这个以后是要用到ssis包里面去的[/quote] 网上搜一下 newtonsoft。你就知道了。
一速微光 2017-09-29
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
json反序列化成类对象,然后执行sql插入数据库
不知道怎么写呀,都提到了序列化,还有newtojson等, 因为我这个以后是要用到ssis包里面去的
一速微光 2017-09-29
  • 打赏
  • 举报
回复
引用 5 楼 hanjun0612 的回复:
这个json数组直接序列化成List<model>对象,然后插入数据库
序列化在网上找了很多的资料都提到,可惜不知道怎么写出来
雨何方 2017-09-29
  • 打赏
  • 举报
回复
第一个方法:添加控件Time,然后设置时间点,一旦到了该时间,就执行。 第二个方法:写一个服务,服务里判断,如果到了该时间点,就执行。 可以尝试一下。
正怒月神 2017-09-29
  • 打赏
  • 举报
回复
这个json数组直接序列化成List<model>对象,然后插入数据库
ou108 2017-09-29
  • 打赏
  • 举报
回复
调用 : string l_joson=“”;//joson字符串 DataTable dt =ToDataTable(l_joson);
xdashewan 2017-09-29
  • 打赏
  • 举报
回复
json反序列化成类对象,然后执行sql插入数据库
ou108 2017-09-29
  • 打赏
  • 举报
回复
思路1:joson转table,然后用table保存 #region Json 字符串 转换为 DataTable数据集合 /// <summary> /// Json 字符串 转换为 DataTable数据集合 /// </summary> /// <param name="json"></param> /// <returns></returns> public static DataTable ToDataTable(this string json) { DataTable dataTable = new DataTable(); //实例化 DataTable result; try { JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值 ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json); if (arrayList.Count > 0) { foreach (Dictionary<string, object> dictionary in arrayList) { if (dictionary.Keys.Count<string>() == 0) { result = dataTable; return result; } if (dataTable.Columns.Count == 0) { foreach (string current in dictionary.Keys) { //dataTable.Columns.Add(current, dictionary[current].GetType()); dataTable.Columns.Add(current); } } DataRow dataRow = dataTable.NewRow(); foreach (string current in dictionary.Keys) { if (!dataTable.Columns.Contains(current)) { dataTable.Columns.Add(current); } dataRow[current] = dictionary[current]; } dataTable.Rows.Add(dataRow); //循环添加行到DataTable中 } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } result = dataTable; return result; } #endregion
一速微光 2017-09-29
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
json反序列化成类对象,然后执行sql插入数据库
刚写c#,可不可以对我这部分数据给个框架出来呢?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧