Json数据解析在Unity3d中的应用
来源:互联网 发布:rf 910编程器驱动程序 编辑:程序博客网 时间:2024/05/17 10:05
最近做项目过程中因为Json文件名写错了一个字母Unity报错,找错误找到半夜,当时为了验错,写了一个小Demo,正好借此总结一下Json.
1.什么是Json
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
2.JSON 语法规则
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
3.Json的结构
- 对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
- 数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。
4.Json在Unity3d中的使用
JsonUtility:JsonUtility是Untiy5.3后新增的内容,有时会出现莫名其妙的错误:
JsonUtility.FromJson():把json字符串转成对象.
JsonUtility.ToJson():把对象转成json字符串.LitJson:LitJson是一个Json的开源项目,这个比较稳定,推荐使用:
JsonMapper.ToObject():把json字符串转成对象.
JsonMapper.ToJson():把对象转成json字符串.
官网下载:http://www.json.org/json-zh.html
放到Unity3d中的Plugin文件夹内
使用的话要注意引入命名空间
5.上代码:
纯数组的Json数据比较简单,在这个Demo中Json数据是一个对象,对象内有一个数组.分别需要用到一个Json对象模型(JsonObjectModel)和一个Json数组模型(JsonArrayModel)来接收这两种Json数据:
- Json源文件
{ "infoList": [ { "panelTypeString": "ItemMessage", "path": "UIPanel/ItemMessagePanel" }, { "panelTypeString": "Knapsack", "path": "UIPanel/KnapsackPanel" }, { "panelTypeString": "MainMenu", "path": "UIPanel/MainMenuPanel" }, { "panelTypeString": "Shop", "path": "UIPanel/ShopPanel" }, { "panelTypeString": "Skill", "path": "UIPanel/SkillPanel" }, { "panelTypeString": "System", "path": "UIPanel/SystemPanel" }, { "panelTypeString": "Task", "path": "UIPanel/TaskPanel" } ]}
- JsonObjectModel:Json对象模型
public class JsonObjectModel { //JsonArrayModel类型的列表 public List<JsonArrayModel> infoList; }
- JsonArrayModel:Json数组模型
public class JsonArrayModel{ //对应Json中属性 名字要一样 public string panelTypeString; public string path;}
- JsonDeserialize:Json解析程序,挂在场景中JsonManager上
public class JsonDeserialize : MonoBehaviour{ void Start( ) { //获取Json文件 TextAsset jsonData = Resources.Load<TextAsset>("JsonData"); JsonObjectModel jsonObject = JsonMapper.ToObject<JsonObjectModel>(jsonData.text); foreach (var info in jsonObject.infoList) { Debug.Log(info.panelTypeString+" "+info.path); } }}
- 输出结果:
6.Demo源代码
链接:http://pan.baidu.com/s/1jHVP9m2 密码:e9h8
- Json数据解析在Unity3d中的应用
- Json数据解析在Unity3d中的应用
- Json数据解析在Unity3d中的应用
- Json数据解析在Unity3d中的应用
- Json数据解析在Unity3d中的应用
- Json数据解析在Unity3d中的应用
- Json数据解析在Unity3d中的应用
- Unity3d-Json数据解析在登录注册本地存取的应用
- JSON数据与JSON在android中的应用
- Json数据与Json在android开发中的应用
- KVC在数据解析中的应用
- unity3d 使用LitJson解析 JSON格式数据
- unity3d请求json数据并解析
- [Unity3d]u3d请求json数据并解析
- Unity3d-XML文件数据解析&JSON数据解析
- .net泛型在构建JSON数据中的应用
- android中的json数据解析
- Android中的JSON数据解析
- 创建型模式-抽象工厂模式(abstract_factory)
- 消息队列之ActiveMQ
- jdbc学习笔记
- ConcurrentHashMap
- 用选择法对10个整数排序
- Json数据解析在Unity3d中的应用
- Android5 Lollipop 中关于 SELinux 安全机制调试笔记
- maven创建struts2项目
- 第五届蓝桥杯 省赛 JavaB组 猜字母
- SQL多表连接查询(详细实例)
- Spark整合kafka0.10.0新特性(一)
- 12 Hive介绍和Hive环境搭建
- Visio2007安装
- 青蛙跳台阶问题