美文网首页Json
Json数据解析在Unity3d中的应用

Json数据解析在Unity3d中的应用

作者: 道阻且长_行则将至 | 来源:发表于2017-04-03 16:23 被阅读376次

最近做项目过程中因为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

    1.png
    放到Unity3d中的Plugin文件夹内
    2.png
    使用的话要注意引入命名空间
3.png

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);
        }

    }
}
  • 输出结果:


    5.png

6.Demo源代码

链接:http://pan.baidu.com/s/1jHVP9m2 密码:e9h8

相关文章

  • Json数据解析在Unity3d中的应用

    最近做项目过程中因为Json文件名写错了一个字母Unity报错,找错误找到半夜,当时为了验错,写了一个小Demo,...

  • @SerializedName注解

    在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。G...

  • 九、Spring MVC Json 数据交互

    Json数据交互 json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。 比如...

  • JSON数据交互

    一、为什么要进行json数据交互? json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析...

  • 网络整理(三)——数据解析

    数据解析: 1.JSON数据 重点:1.什么是JSON数据.{ } 数据解析: 2.JSON解析 重点:1.JSO...

  • Android Studio 使用Gson和GsonFormat

    前言: 在日常开发中,我们可能会面对很多复杂的Json数据,每次都要费点脑筋去写解析Json的代码。Json解析的...

  • json-1008

    json入门json实验json在项目中的应用总结 json练习题 json解析练习

  • 很好的 JSONModel

    JSON数据---JSONModel解析 JSON数据---JSONModel解析 JSONModel 初始化流程...

  • SpringBoot2.X 工具篇 - Jackson

    一.前言 Jackson是解析 JSON 数据的工具包,Spring 中默认的 JSON 解析包就是 Jackso...

  • 网络

    NSURLConnection NSURLSession 普通网络请求 JSON数据解析 JSON序列化 数据解析...

网友评论

    本文标题:Json数据解析在Unity3d中的应用

    本文链接:https://www.haomeiwen.com/subject/qprogttx.html