JSON是存儲和交換文本信息的語法,類似XML。比XML更小,更快,更易解析,和XML一樣是一種數據格式。這里使用litjson簡單讀取一下文本信息。
方法1:使用JsonMapper.ToObject解析
創建一個txt用於存儲文本信息
json技能信息.txt:
[
{"ID":1,"Name":"鳳舞九天","Damage":230},
{"ID":2,"Name":"光之束縛","Damage":125},
{"ID":3,"Name":"最后一擊","Damage":400}
]
程序中創建一個與json文本信息對應的Skill類:
class Skill { public int ID { get; set; } public string Name { get; set; } public int Damage { get; set; } public override string ToString() { return $"{nameof(ID)}: {ID}, {nameof(Name)}: {Name}, {nameof(Damage)}: {Damage}"; } }
Main中:
static void Main(string[] args) { List<Skill> skillList = new List<Skill>(); //使用litjson解析json文本 //兩種引入Lisjson方式。1.官網下載dll程序集;2.右鍵引用,在管理netget程序包中下載 //這里的jsondata代表一個數組 JsonData jsondata = JsonMapper.ToObject(File.ReadAllText(@".\..\..\json技能信息.txt")); foreach (JsonData data in jsondata)//這里data代表一個對象 { Skill skill = new Skill(); JsonData IDValue = data["ID"]; JsonData NameValue = data["Name"]; JsonData DamageValue = data["Damage"]; skill.ID = Int32.Parse(IDValue.ToString()); skill.Name = NameValue.ToString(); skill.Damage = Int32.Parse(DamageValue.ToString()); skillList.Add(skill); } foreach (Skill skill in skillList) { Console.WriteLine(skill.ToString()); } Console.ReadKey(); }
結果:
上面我們使用File.ReadAllText()方法傳入需要的文本信息,再使用JsonMapper來對文本進行解析,最終解析好的數據存到“jsondata”里面,然后把“jsondata”里面的數據信息分別提取出來
參考博客:https://blog.csdn.net/qq_21726721/article/details/81124428
方法2:使用泛型JsonMapper.ToObject<>解析
依然使用上面的json文件,主程序中稍微修改一下:
Skill[] skillArray = JsonMapper.ToObject<Skill[]>(File.ReadAllText(@".\..\..\json技能信息.txt")); foreach (Skill temp in skillArray) { Console.WriteLine(temp); }
結果同上。
使用這種方式需要將類的模型和json模型做好對應,使用該方式可以很簡易的得到json中的數據。
方法3:
這次我們將json中的文本修改一下:
角色信息.txt
{
"Player":"花千骨",
"Level":100,
"SkillList":[
{"ID":1,"Name":"鳳舞九天","Damage":230},
{"ID":2,"Name":"光之束縛","Damage":125},
{"ID":3,"Name":"最后一擊","Damage":400}
]
}
由於json改變了,相應的我們也得重新寫一個PlayerInfo類:
class PlayerInfo { public string Player { get; set; } public int Level { get; set; } public List<Skill> SkillList { get; set; } }
Main中:
PlayerInfo playerinfo = JsonMapper.ToObject<PlayerInfo>(File.ReadAllText(@".\..\..\角色信息.txt")); Console.WriteLine(playerinfo.Player); Console.WriteLine(playerinfo.Level); foreach (Skill temp in playerinfo.SkillList) { Console.WriteLine(temp.ToString()); } Console.ReadKey();
結果為:
這里推薦一個國內json的校驗和在線編輯網站:www.bejson.com