C#高级篇-JSON相关、Excel操作

1.JSON

JSON是存储和交换文本信息的语法。类似XML

相比XML更加轻量级,它基于ECMAScript的一个子集。

JSON采用完全独立于语言的文本格式。 

具有自我描述性,更容易理解

语法规则

数据在键值对中

数据由逗号分隔

花括号保存对象

方括号保存数组

JSON 名称/值对

JSON的值可以是:

          数字(int or float)

          字符串(用双引号括起来)

          逻辑值(true or false)

          数组(在方括号中)

          对象(在花括号中)

          null

2.书写json文本、引入json库文件

一个简单的json文本

[
{"id":2,"name":"豪火球","damage":66},
{"id":3,"name":"里连环","damage":9},
{"id":4,"name":"手里剑","damage":6},
]

引入json库文件可以通过项目中的引用管理NuGet程序包,联网下载安装

3.使用JsonMapper解析json数据

通过JsonMapper解析Json的文本文件

将解析出来的data用JsonData的对象来进行保存,通过字符串索引器可以取得保存的键值对的值

//使用jsonMapper解析json 返回一个jsondata代表一个数组或者对象
            JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("技能信息.txt"));
            foreach (JsonData temp in jsonData)
            {
                JsonData idValue = temp["id"];//通过字符串索引器可以取得键值对的值
                JsonData nameValue = temp["name"];
                JsonData damageValue = temp["damage"];
                int id = Int32.Parse(idValue.ToString());
                int damage = Int32.Parse(damageValue.ToString());
                Console.WriteLine(id + ":" + nameValue.ToString() + ":" + damage);

            }

4.使用JsonMapper跟泛型解析json

直接指定泛型为数组,让解析出来的数据返回数组

//使用泛型解析
            Skill[] skillArray = JsonMapper.ToObject<Skill[]>(File.ReadAllText("技能信息.txt"));
            foreach(var temp in skillArray)
            {
                Console.WriteLine(temp);
            }

5.将data数据转换成json数据

Skill mySkill = new Skill();
            mySkill.id = 6;
            mySkill.damage = 99;
            mySkill.name = "whoisyourdady";
            string json = JsonMapper.ToJson(mySkill);
            Console.WriteLine(json);

6.json的校验和json在线编译器

在线Json校验的网站

http://www.bejson.com/

json在线编译器

http://www.bejson.com/jsoneditoronline/

7.Excel操作

使用OLEDB操作Excel

先创建一个Connection对象,传递一个连接字符串

打开链接

通过Adapter传递查询命令,查询相关信息

将adapter数据填充到dataSet中

释放连接资源

取得数据存放到DataTableCollection对象中

将Collection中的数据存放到DataTable对象中

将table中的数据存放到DataRowCollection中

遍历rowCollection得到DataRow的对象
用索引器取得row中的数据

static void Main(string[] args)
        {
            string fileName = "装备信息.xls";
            string connectionString = 
                "Provider=Microsoft.Jet.OLEDB.4.0;" + 
                "Data Source=" +fileName + ";" + ";" +
                "Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";

            //用来跟数据源建立连接
            OleDbConnection connection = new OleDbConnection(connectionString);
            //打开连接
            connection.Open();

            string sql = "select*from [Sheet1$]";//这个是一个查询命令
            //使用Adapter适配器进行查询,查询结果是一个表格
            OleDbDataAdapter adapter = new OleDbDataAdapter(sql,connection);
            //使用DataSet来存放数据
            DataSet dataSet = new DataSet();//用来存放DataTable
            adapter.Fill(dataSet);//表示把查询的结果(datatable)放(填充)到dataset中
            connection.Close();

            //取得数据
            DataTableCollection tableCollection = dataSet.Tables;//获取当前集合中所有的表格
            DataTable table = tableCollection[0];

            //取得表格中的数据
            DataRowCollection rowCollection = table.Rows;//返回一个行的集合
            foreach(DataRow row in rowCollection)
            {
                //取得row中前8列的数据
                for(int i = 0; i < 8; i++)
                {
                    Console.Write(row[i]+" ");
                }
                Console.WriteLine();
            }
            Console.ReadKey();
        }

猜你喜欢

转载自blog.csdn.net/Game_Builder/article/details/81275277