首页 新闻 会员 周边 捐助

如何用C#将序列化为json的字符串导入到sql server中数据库

0
悬赏园豆:10 [已解决问题] 解决于 2013-07-08 17:55

{
    "录取情况(新生)": {
        "全日制学生": {
            "男生": "836",
            "女生": "827",
            "合计": "1663"
        },
        "在职学生": {
            "男生": "836",
            "女生": "827",
            "合计": "1663"
        }
    },
    "所有本科生": {
        "全日制学生": {
            "男生": "3317",
            "女生": "3316",
            "合计": "6633"
        },
        "在职学生": {
            "男生": "1",
            "女生": "7",
            "合计": "8"
        },
        "研究生": {
            "男生": "7303",
            "女生": "6671",
            "合计": "13974"
        }
    },
        "宗教种族背景本科生": {
            "美洲印第安人/阿拉斯加土著人": "少于1%",
            "亚洲人": "15%",
            "黑人": "6%",
            "西班牙人": "8%",
            "多种族": "3%",
            "夏威夷土人/太平洋岛国居民": "少于1%",
            "白人": "43%",
            "种族不明": "1%"
        },
        "外州学生": {
            "外州学生比例": "74%",
            "代表的州和地区数量数量": "54"
        },
        "国际学生": {
            "国际学生比例": "10%",
            "代表的国家数量": "110"
        },
        "学生年龄": {
            "年龄超过25岁的学生(含25岁)比例": "1%"
        }
    }
}

序列化的字符串,怎么用ADO.net导入数据库啊

邱育华的主页 邱育华 | 初学一级 | 园豆:10
提问于:2013-07-01 10:00
< >
分享
最佳答案
0

1.解析json(这一步关键,C#应该有解析json数据的库吧)

2.setter bean对象

3.ADO.net 持久化bean对象导数据库即可!

收获园豆:10
Beyond-bit | 老鸟四级 |园豆:2885 | 2013-07-01 10:06

解析JSON建议用Json.Net

dudu | 园豆:30357 (高人七级) | 2013-07-01 10:11

不太明白,能否有点代码提示下,谢谢

邱育华 | 园豆:10 (初学一级) | 2013-07-01 10:13

@叶落无声1:

加上dudu大人的回复我想够明白了吧!

使用Json.Net解析你上面的字符串,得到new bean对象,将bean对象insert到数据库!

 

实在抱歉,我玩java的,对C#只是了解,思路基本就是那样!

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 10:20

@Beyond-bit: 我是有建立类,然后复制进行序列化(那解析是所谓的序列化吗),上面的字符串是我序列化后输出的结果,关键我现在要怎么去建立以之对应的表导进去!本人实习生,任务要求,不好意思有劳帮忙了

邱育华 | 园豆:10 (初学一级) | 2013-07-01 10:30

@叶落无声1: 

1.好吧!那我就给你讲细致点,序列化只是将数据序列化为完整的准确无误的json格式的数据!

2,解析指的就是将你上面的json数据一一从json格式中分解出来,的到字符串格式的便于封装bean对像

  eg: "录取情况(新生)" 

       "全日制学生" 

        "男生": "836",
                "女生": "827",
                "合计": "1663"

上面的就是一对多的关系!(是在不行,你可以看做xml数据,获取xml值赋值给bean理解吧!)

3.建立一对多的对象

4.将value setter给你的bean对象!

5最后将bean存数据库

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 10:42

@Beyond-bit: 那我是要先在DB中建立已之相对应的表吗?

邱育华 | 园豆:10 (初学一级) | 2013-07-01 11:16

@叶落无声1: 

这个当然啊!没有表你如何存数据啊!

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 11:26

@Beyond-bit: 

namespace Myjson {     class 学校3     {         public 学校3()         {             体育奖学金项目 = new List<体育奖学金>();         }

        public string 体育协会成员 { get; set; }         public List<体育奖学金> 体育奖学金项目 { get; set; }     }     public class 体育奖学金     {

        public string 项目 { get; set; }

        public string 性别 { get; set; }

        public string 选区 { get; set; }

    }

}

namespace Myjson {     class GetTable3Json     {         public static void GetTable3JsonString()         {             学校3 hf = new 学校3();

            hf.体育协会成员 = "全国大学体育协会(NCAA)";

            hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "棒球", 性别 = "男子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "篮球", 性别 = "男子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "篮球", 性别 = "女子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "越野赛跑", 性别 = "女子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "英式足球", 性别 = "男子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "英式足球", 性别 = "女子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "田径", 性别 = "男子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "网球", 性别 = "女子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "田径", 性别 = "女子", 选区 = "选区2" });             hf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "排球", 性别 = "女子", 选区 = "选区2" });

            var table3json1 = Newtonsoft.Json.JsonConvert.SerializeObject(hf);

            Console.WriteLine(table3json1);

            学校3 plsd = new 学校3();

            plsd.体育协会成员 = "全国大学体育协会(NCAA)";

            plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "棒球", 性别 = "男子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "篮球", 性别 = "男子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "篮球", 性别 = "女子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "越野赛跑", 性别 = "男子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "赛艇", 性别 = "男子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "越野赛跑", 性别 = "女子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "剑术", 性别 = "男子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "剑术", 性别 = "女子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "陆上曲棍球", 性别 = "女子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "游泳", 性别 = "女子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "网球", 性别 = "男子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "网球", 性别 = "女子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "田径", 性别 = "男子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "田径", 性别 = "女子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "排球", 性别 = "女子", 选区 = "选区1" });             plsd.体育奖学金项目.Add(new 体育奖学金 { 项目 = "摔跤", 性别 = "女子", 选区 = "选区1" });

            var table3json2 = Newtonsoft.Json.JsonConvert.SerializeObject(plsd);

            Console.WriteLine(table3json2);

            学校3 stf = new 学校3();

            stf.体育协会成员 = "全国大学体育协会(NCAA)";

            stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "棒球", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "篮球", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "篮球", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "越野赛跑", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "赛艇", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "赛艇", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "越野赛跑", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "剑术", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "剑术", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "足球", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "足球", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "陆上曲棍球", 性别 = "女子", 选区 = "选区1"});             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "游泳", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "游泳", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "垒球", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "网球", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "网球", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "田径", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "田径", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "排球", 性别 = "女子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "排球", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "水球", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "水球", 性别 = "男子", 选区 = "选区1" });             stf.体育奖学金项目.Add(new 体育奖学金 { 项目 = "摔跤", 性别 = "男子", 选区 = "选区1" });

            var table3json3 = Newtonsoft.Json.JsonConvert.SerializeObject(stf);

            Console.WriteLine(table3json3);

            学校3 dk= new 学校3();

            dk.体育协会成员 = "全国大学体育协会(NCAA)";

            dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "棒球", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "篮球", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "篮球", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "赛艇", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "足球", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "陆上曲棍球", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "高尔夫", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "高尔夫", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "长曲棍球", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "长曲棍球", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "足球", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "足球", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "垒球", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "游泳", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "游泳", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "网球", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "网球", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "田径", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "田径", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "排球", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "排球", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "水球", 性别 = "男子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "水球", 性别 = "女子", 选区 = "选区1" });             dk.体育奖学金项目.Add(new 体育奖学金 { 项目 = "摔跤", 性别 = "男子", 选区 = "选区1" });

            var table3json4 = Newtonsoft.Json.JsonConvert.SerializeObject(dk);

            Console.WriteLine(table3json4);

这些是我序列json的代码,问题是我要怎么在DB中建立数据表,使之存入一一对应的数据呢

邱育华 | 园豆:10 (初学一级) | 2013-07-01 11:27

@叶落无声1: 

你给我这个太乱了吧!类型相同的为一个表!如果一个类型下面存在多个其他类型说明存在主外键关系!

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 11:33

@Beyond-bit: 

  如果建立了表,数据填充的话是在DB里面用SQL填充还是可以有更简单快速的方法,比如ADO.NET或者怎么快速跑进数据库

邱育华 | 园豆:10 (初学一级) | 2013-07-01 11:43

@叶落无声1: 当然可以用ADO.net 你用ADO.net 写过b/s程序吗、你的程序里面bean对象如何insert的?那么这个就是一样的!因为这个时候数据已经分装到bean对象了,保存bean对象即可!

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 11:47

@Beyond-bit: 

关键这些都是嵌套的表列,在DB中不允许这样列中有列啊!以前没有写过b/s程序。

邱育华 | 园豆:10 (初学一级) | 2013-07-01 11:51

@叶落无声1: eg:一年级:

        1班

        2班

        3班

        二年级

        1班

        2班

        3班

bean就是这样的:

class  Grad{

  private string gradName;  //年级

  private List list;  //班级

}  

那你保存的时候就是

 Grad grad = new Grad();

 grad.gradName="1年级";

 grad.list.add("1班");

 grad.list.add("2班");

 grad.list.add("3班");

 

DAO.save(grad);

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 12:00

@Beyond-bit: 

这样以录取情况为一列,可是下面那些怎么办

邱育华 | 园豆:10 (初学一级) | 2013-07-01 13:03

@叶落无声1: 

这个数据是并列关系?

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 14:12

@Beyond-bit: 那在DB里面该如何去进行分列呢

邱育华 | 园豆:10 (初学一级) | 2013-07-01 14:13

@叶落无声1: 

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 14:18

@Beyond-bit: 

我的意思是这样的,那个截图是个基于EXCEl的数据,现在呢我要在sql server中建立以之相对应的表来存储,而且查询的时候还要能用上里面的数字数据,把这些归在一列没有意义啊

邱育华 | 园豆:10 (初学一级) | 2013-07-01 14:31

@叶落无声1: 

那你不早说!

首先分析你的数据,从中间的“!”分开这样就是两个表了!

table1一个:全日制学生

table2一个:在职学生:

table1 结构: 全日制学生id,全日制学生,男生,836,女生,827,合计,1663

table2 结构: 在职学生id,全日制学生id,全日制学生,男生,836,女生,827,合计,1663

save的时候判断,“!”后面为null则continue

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 14:45

@Beyond-bit: 

这个是怎么一回事DAO.save(grad);如果我还有很多类似这样的看着像是并列的数据,那不是要分很多各表,导入数据的时候,是要用到SqlCommand类似的这些类吗?

邱育华 | 园豆:10 (初学一级) | 2013-07-01 14:50

@叶落无声1: 

有很多类似这样的?问问你老大啊!这样下去不行啊!针对不同的问题要有不同的表!

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-07-01 14:54

@Beyond-bit: 

非常感谢你这么耐心的帮我!!!

邱育华 | 园豆:10 (初学一级) | 2013-07-01 14:57
其他回答(4)
0

你是想存你生成的Json串,还是要把Json串对应的值存到DB中?

丿暖。风? | 园豆:213 (菜鸟二级) | 2013-07-01 10:38

就是把这种json格式的值存到DB中,对应的表格存储

支持(0) 反对(0) 邱育华 | 园豆:10 (初学一级) | 2013-07-01 10:54
0

当字符串存就行了, 咋那么麻烦。

清海扬波 | 园豆:825 (小虾三级) | 2013-07-01 11:57

就是不懂没办法啦

支持(0) 反对(0) 邱育华 | 园豆:10 (初学一级) | 2013-07-01 14:05
0

。。。直接字符串还不能存么。。。汗

Supper_litt | 园豆:1036 (小虾三级) | 2013-07-01 12:30

请指教,关键我不会根据上面那种数据建表

支持(0) 反对(0) 邱育华 | 园豆:10 (初学一级) | 2013-07-01 14:06

@叶落无声1: 都搞定了,其实只是存下json的字符串就好了,害我以为还要分开存!!谢谢!辛苦了

支持(0) 反对(0) 邱育华 | 园豆:10 (初学一级) | 2013-07-08 17:48
0

你学的是易语言?

Eric.luo | 园豆:853 (小虾三级) | 2013-07-08 15:28

不是啊!只是处理json的数据格式而已,用的是.net

支持(0) 反对(0) 邱育华 | 园豆:10 (初学一级) | 2013-07-08 17:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册