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校驗的網站
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();
}