[我眼中的C#]XML和JSON
来源:互联网 发布:配电网工程设计软件 编辑:程序博客网 时间:2024/05/02 00:50
JSON
JSON式存储和交换文本信息的语法,它是一种轻量级文本数据交换格式,JSON独立于语言,他具有自我描述性,所以相对于XML更容易理解。
学习JSON之前需要导入JSON 解析库,我们这里需要的是LitJSON.DLL,有两种方式导入
1,直接去JSON官网从C#模块下载,
2,通过VS项目引用里的的NuGET直接联机下载。
之后通过JSON创建两个json文档
{}代表一个对象,而[]代表数组
json主角信息.txt:
{
“Name”:”siki”,
“Level”:99,
“Age”:18,
“skilllist”:[
{“id”: 2,”name”: “天下无双”,”demage”: 123},
{“id”: 3,”name”: “独孤九剑”,”demage”: 56},
{“id”: 4,”name”: “死亡之翼”,”demage”: 8003}
]
}
json技能信息.txt:
[
{“id”: 2,”name”: “天下无双”,”demage”: 123},
{“id”: 3,”name”: “独孤九剑”,”demage”: 56},
{“id”: 4,”name”: “死亡之翼”,”demage”: 8003}
]
在建立两个相关的类用来对应文档中的信息(注意对象名字一定要一样,不然搜索为空)
Player.cs:
class Player { public string Name { get; set; } public int Level { get; set; } public int Age { get; set; } public List<Skill> skilllist { get; set; } public override string ToString() { return string.Format("Name: {0}, Level: {1}, Age: {2}", Name, Level, Age); } }
Skill.cs:
class Skill { public int id { get; set; } public int demage { get; set; } public string name { get; set; } public override string ToString() { return string.Format("id: {0}, demage: {1}, name: {2}", id, demage, name); } }
接着解析通过LitJson解析文档:
JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("json技能信息.txt")); foreach (JsonData temp in jsonData) { JsonData idValue = temp["id"]; //通过欧字符串索引器获取键值对的值 JsonData nameValueData = temp["name"]; JsonData damageValue = temp["demage"]; int id = int.Parse(idValue.ToString()); int demage = int.Parse(damageValue.ToString()); Console.WriteLine(id + " " + demage + " " + nameValueData); } Skill[] skillArray = JsonMapper.ToObject<Skill[]>(File.ReadAllText("json技能信息.txt"));//使用泛型解析Json foreach (var skill in skillArray) { Console.WriteLine(skill); } List<Skill> skillArray = JsonMapper.ToObject<List<Skill>>(File.ReadAllText("json技能信息.txt")); foreach (var skill in skillArray) { Console.WriteLine(skill); } Player player = JsonMapper.ToObject<Player>(File.ReadAllText("json主角信息.txt")); foreach (Skill skill in player.skilllist) { Console.WriteLine(skill); } Console.WriteLine(player); Player p = new Player(); p.Name = "sdf"; p.Level = 16; p.Age = 18; string json = JsonMapper.ToJson(p); Console.WriteLine(json); Console.ReadKey();
XML
XML文档解析过程与JSON类似,只不过后者采用了另一种语言以及解析方式
FileText1.txt:
<SkillInfo> <SkillList> <Skill SkillID="20002" SkillEngName="Smash" TriggerType="1" ImageFile="data/gfx/image/gui_icon_skill_000.dds" AvailableRace="7" > <Name>重击</Name> </Skill> <Skill SkillID="20003" SkillEngName="Hide" TriggerType="2" ImageFile="data/gfx/image/gui_icon_skill_001.dds" AvailableRace="1" > <Name>隐身</Name> </Skill> <Skill SkillID="20004" SkillEngName="Ikari" TriggerType="3" ImageFile="data/gfx/image/gui_icon_skill_002.dds" AvailableRace="1" > <Name>怒之翼</Name> </Skill> <Skill SkillID="20005" SkillEngName="Revenge" TriggerType="5" ImageFile="data/gfx/image/gui_icon_skill_003.dds" AvailableRace="2" > <Name>光之复仇</Name> </Skill> </SkillList></SkillInfo>
Skill.txt:
class Skill { public int Id { get; set; } public string EngName { get; set; } public int TriggerType { get; set; } public string ImageFile { get; set; } public string Name { get; set; } public int AvaliableRace { get; set; } public override string ToString() { return string.Format("Id: {0}, EngName: {1}, TriggerType: {2}, ImageFile: {3}, Name: {4}, AvaliableRace: {5}", Id, EngName, TriggerType, ImageFile, Name, AvaliableRace); } }
static void Main(string[] args) { List<Skill> skillLsit = new List<Skill>(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("TextFile1.txt"); XmlNode skillInfoNode= xmlDoc.FirstChild; XmlNode skillListNode = skillInfoNode.FirstChild; XmlNodeList skillNode = skillListNode.ChildNodes; foreach (XmlNode mySkillNode in skillNode) { Skill skill = new Skill(); XmlElement ele = mySkillNode["Name"]; skill.Name = ele.InnerText; skill.Id = int.Parse(mySkillNode.Attributes["SkillID"].Value); skill.EngName = mySkillNode.Attributes["SkillEngName"].Value; skill.TriggerType = int.Parse(mySkillNode.Attributes["TriggerType"].Value); skill.AvaliableRace = int.Parse(mySkillNode.Attributes["AvailableRace"].Value); skill.ImageFile = mySkillNode.Attributes["ImageFile"].Value; skillLsit.Add(skill); } foreach (var skill in skillLsit) { Console.WriteLine(skill); } Console.ReadKey(); }
- [我眼中的C#]XML和JSON
- [我眼中的C#]String和StringBuilder
- [我眼中的C#]反射和特性
- 我眼中的C指针
- [我眼中的C#]集合和泛型
- [我眼中的C#]委托和Lambda表达式
- [我眼中的C#]复杂的数据类型
- [我眼中的C#]类的介绍
- C语言我眼中的指针
- C语言我眼中的指针
- C语言我眼中的指针
- [我眼中的C#]创建一个项目
- [我眼中的C#]流程控制语句
- [我眼中的C#]正则表达式
- [我眼中的C#]多线程编程
- [我眼中的C#]网络编程
- [我眼中的C#]文件读写操作
- 我眼中的phpwind和discuz
- Log的使用方法
- 二.Nginx的web服务器搭建
- 电脑硬件知识入门之显卡篇
- 【持续更新】adb常用命令
- react阻止冒泡事件(使用原生js方法)
- [我眼中的C#]XML和JSON
- Git 使用中显示“Another git process seems to be running in this repository...”问题解决
- 【BZOJ1038】【codevs1412】瞭望塔,半平面交/三分法
- ssh putty使用 记录
- mysql数据库中 控制流程函数 case
- mysql事件
- 迄今为止计算机视觉领域超有实力的研究人物主页
- service和aidl的区别
- java.lang.UnsatisfiedLinkError: no jacob in java.library.path