Json的解析
JSON(JavaScriptObject Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于ECMAScript(w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
用于解析Json的库有很多,这次练习主要是使用的LitJson来解析,在建立项目解析Json之前,我们需要引入LitJson解析库。
右键点击引入->管理NuGet程序包->搜索LitJson,点击安装就自动引入LitJson解析包了。
为了解析Json文件,我们在工程下建立一个txt格式的Json文档,取名为Json技能信息,
内容如下:
[ {"id":1,"name":"天下无双","damage":100}, {"id":2,"name":"龙盘虎踞","damage":100}, {"id":3,"name":"帅坤炮弹","damage":1} ]
这个就是我们这次练习中需要解析的Json文件。
然后建立Skill类,设置Json的字段:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Json文档解析 { public class Skill { public int id; public string name; public int damage; public override string ToString() { return string .Format("Id:{0},Damage:{1},Name:{2}",id,damage,name); } } }
Json解析的方式也有多种,我们这里介绍两种:
第一种就是常规的解析方法:
通过JsonMapper来打开Json文件,保存在实例化的对象中,然后通过索引来获取相应的信息。
第二种方式就是通过Json的泛型解析。
代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using LitJson; using System.IO; namespace Json文档解析 { class Program { static void Main(string[] args) { //普通的解析方式 //引入LitJson库 //List<Skill> skillList = new List<Skill>(); //JsonData jsondate= JsonMapper.ToObject(File.ReadAllText("Json技能信息.txt")); //foreach (JsonData temp in jsondate ) //{ // Skill skill = new Skill(); // JsonData idValue = temp["id"]; // JsonData nameValue = temp["name"]; // JsonData damageValue = temp["damage"]; // int id = Int32.Parse(idValue.ToString()); // int damage = Int32.Parse(damageValue.ToString()); // skill.id = id; // skill.damage = damage; // skill.name = nameValue.ToString(); // skillList.Add(skill); //} //foreach (var temp in skillList) //{ // Console.WriteLine(temp); //} ///////////////////////////////////////////////////////////////////////// //泛型解析 //Skill[] skillArray = JsonMapper.ToObject<Skill[]>(File.ReadAllText("Json技能信息.txt")); //foreach (var temp in skillArray) //{ // Console.WriteLine(temp); //} ///////////////////////////////////////////////////////////////////////////// } } }
简书地址:http://www.jianshu.com/p/40a2d2cecd3f