当前位置:   article > 正文

【Unity】读取Json的三种方法(JsonUtility,LitJson,Newtonsoft)_untiy json怎么读取

untiy json怎么读取

介绍

Unity开发过程中,Json是比较常用的一种数据存储文本,尤其是在和第三方交互中,基本都是json格式。
先给出一个Json示例,我们来看看是如何解析的。

{
  "Player": [
    {
      "id": 1001,
      "name": "王二",
      "job": 1
    },
    {
      "id": 1002,
      "name": "小红",
      "job": 2
    },
    {
      "id": 1003,
      "name": "刚子",
      "job": 3
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

方法一:JsonUtility

JsonUtility是Unity内置的用于解析Json的方法

序列化:ToJson()
反序列化:FromJson<>()

首先需要定义解析后的实体类

[System.Serializable]
public class PlayerData
{
    //玩家ID
    public int id;
    //玩家名字
    public string name;
    //玩家职业
    public int job;
}
[System.Serializable]
public class Data
{
    public PlayerData[] Player;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

解析代码如下

    void Start()
    {
        //加载资源
        TextAsset obj = Resources.Load<TextAsset>("player" );
        if (obj != null)
        {
            //解析
            Data m_Data = JsonUtility.FromJson<Data>(obj.text);

            //打印
            foreach (PlayerData item in m_Data.Player)
            {
                Debug.Log("ID:"+item.id + "  Name:" + item.name + "  Job:" + item.job);
               
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

方法二:LitJson

需要:LitJson插件
下载链接:LitJson资源下载
序列化:ToJson()
反序列化:ToObject<>()

   void Start()
    {
        //加载资源
        TextAsset obj = Resources.Load<TextAsset>("player" );
        if (obj != null)
        {
            //使用JsonMapper.ToObject解析
            Data m_Data = JsonMapper.ToObject<Data>(obj.text);
            //打印
            foreach (PlayerData item in m_Data.Player)
            {
                Debug.Log("ID:"+item.id + "  Name:" + item.name + "  Job:" + item.job);
               
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

方法三:Newtonsoft

需要:Newtonsoft.Json.dll
下载链接:Newtonsoft.Json.dll
序列化:SerializeObject()
反序列化:DeserializeObject<>()

    void Start()
    {
        //加载资源
        TextAsset obj = Resources.Load<TextAsset>("player" );
        if (obj != null)
        {
            //JsonConvert.DeserializeObject
            Data m_Data = JsonConvert.DeserializeObject<Data>(obj.text);
            //打印
            foreach (PlayerData item in m_Data.Player)
            {
                Debug.Log("ID:"+item.id + "  Name:" + item.name + "  Job:" + item.job);
               
            }
        }
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

打印结果

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/441047
推荐阅读
相关标签
  

闽ICP备14008679号