Unity常见的解析数据方式XML,JSON,ProtocolBuf篇(三)Json
2017-01-01 22:30
519 查看
Unity常见的解析数据方式XML,JSON,ProtocolBuf篇(三)Json
概述
Json是一种存储和交换文本信息的语法,类似于XML。(注意这里两个概念,存储文本信息,交换文本信息)Json和xml都是一种存储信息的数据格式,但是Json比Xml要优秀一些,三种存储和解析数据的数据格式优先级是Protobuf>Json>XML。我们学习使用Json,首先像学习XML文档一样从书写格式开始学起,如果写Json数据都不会写,后面的更加不用说了,写Json数据,需要注意的地方:
书写规则:
数据在键值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
示例:
接下来我们来写这样一个Json文本信息,来用代码进行解析。
Json数据映射类
接下来使用Json泛型解析文本数据
①.解析成映射类Skill类型的数组:Skill[]
②.解析成映射类Skill类型的集合:List<Skill>
我们接下来解析一个Json对象,前面的脚本记住还是需要的。
修改Json文本
添加玩家类
解析
最后输出
当然上面说的都是讲文本解析出来,我们也可以将对象封装成Json文本,调用
概述
Json是一种存储和交换文本信息的语法,类似于XML。(注意这里两个概念,存储文本信息,交换文本信息)Json和xml都是一种存储信息的数据格式,但是Json比Xml要优秀一些,三种存储和解析数据的数据格式优先级是Protobuf>Json>XML。我们学习使用Json,首先像学习XML文档一样从书写格式开始学起,如果写Json数据都不会写,后面的更加不用说了,写Json数据,需要注意的地方:
书写规则:
数据在键值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
示例:
[ {"id":2,"name":"kill1","damage":123}, {"id":3,"name":"kill2","damage":231}, {"id":"4","name":"kill3","damage":132} ]
接下来我们来写这样一个Json文本信息,来用代码进行解析。
using LitJson; //注意Jsondll的引用 namespace Json_Pro { class Program { private static List<Skill> mSkillList = new List<Skill>(); static void Main(string[] args) { //1.添加litjson.dll //2.开始解析 skill.txt //使用JsonMapper进行文本数据解析,接收解析使用JsonData JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("Skill.txt")); foreach (JsonData item in jsonData) //一定要确定为jsondata型 var下面不能转换 { Skill skill = new Skill(); JsonData idValue = item["id"]; JsonData nameValue = item["name"]; JsonData damageValue = item["damage"]; //int id=Int32.Parse(idValue.ToString()); //string skillName = nameValue.ToString(); //int damage=Int32.Parse(damageValue.ToString()); skill.ID = Int32.Parse(idValue.ToString()); skill.Name = nameValue.ToString(); skill.Damage = Int32.Parse(damageValue.ToString()); //3.测试数据 //Console.WriteLine(id + skillName + damage); //4.创建json数据映射类用来存储解析出来的技能信息 mSkillList.Add(skill); } foreach (Skill itemSkill in mSkillList) { Console.WriteLine("id:"+ itemSkill.ID+" name:"+ itemSkill.Name+" damage:"+ itemSkill.Damage); } Console.ReadKey(); } } }
Json数据映射类
namespace Json_Pro { class Skill { public int ID { get; set; } public string Name { get; set; } public int Damage { get; set; } } }
接下来使用Json泛型解析文本数据
①.解析成映射类Skill类型的数组:Skill[]
static void Main(string[] args) { //1.添加litjson.dll //2.开始解析 skill.txt //使用JsonMapper进行文本数据解析,接收解析使用JsonData Skill[] skills = JsonMapper.ToObject<Skill[]>(File.ReadAllText("Skill.txt")); //这种方式要注意映射类和json值要对应 例如:Json :int value Map.cs: -->int value ,简言之就是对象的键一定要和定义的类的字段名字一致 foreach (var item in skills) { Console.WriteLine(item); } Console.ReadKey(); }
②.解析成映射类Skill类型的集合:List<Skill>
static void Main(string[] args) { List<Skill>mSkillList=new List<Skill>(); mSkillList = JsonMapper.ToObject<List<Skill>>(File.ReadAllText("Skill.txt")); foreach (var item in mSkillList) { Console.WriteLine(item); } Console.ReadKey(); }
我们接下来解析一个Json对象,前面的脚本记住还是需要的。
修改Json文本
{ "name":"pc", "level":95, "age":18, "skillList":[ {"id":2,"name":"kill1","damage":123}, {"id":3,"name":"kill2","damage":231}, {"id":4,"name":"kill3","damage":132} ] }
添加玩家类
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},skillList{3}", name, level, age,skillList); } }
解析
class Program { static void Main(string[] args) { Player skillInfo = JsonMapper.ToObject<Player>(File.ReadAllText("Skill.txt")); Console.WriteLine(skillInfo); foreach (var item in skillInfo.skillList) { Console.WriteLine(item); } Console.ReadKey(); } }
最后输出
当然上面说的都是讲文本解析出来,我们也可以将对象封装成Json文本,调用
//将对象变成Json数据 string jsonData= JsonMapper.ToJson();
相关文章推荐
- unity常见的解析数据方式XML,JSON,ProtocolBuf篇(二)XML
- Unity常见的解析数据方式XML,JSON,ProtocolBuf篇(一)Protobuf
- android 解析服务器数据使用json还是xml方式
- XML数据的三种解析(JSON方式 , DOM方式 , Sax方式)
- iOS- JSon和Xml解析,与服务器交互数据的解析详解与使用,各种解析方式详解
- android中常见的二种数据解析方法----XML和Json
- XML数据解析方式各有什么不同,JSON解析有哪些框架?
- unity中三种数据存储方式ScriptableObject,Json,Xml和Dictionary的序列化
- 四种常见的 POST 提交数据方式(application/x-www-form-urlencoded,multipart/form-data,application/json,text/xml)
- Android第一行代码 第九章 数据解析方式(xml,json)
- XML/JSON解析数据,以及数据存储方式
- android 解析服务器数据使用json还是xml方式
- jquery json xml关于解析两次json数据动态取值的处理方式
- iOS- JSon和Xml解析,与服务器交互数据的解析详解与使用,各种解析方式详解
- [Android]四种方式解析字符串----JSON、SAX、DOM、XML
- 在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull)
- DOM方式解析XML配置文件,将数据保存成数组
- Android解析XML(PULL方式)和JSON 工作原理和实现过程(详细代码)
- windows8开发-metro应用中使用xml+json作为数据存储方式
- WindowsPhone中XML和Json格式的数据解析