Unity读取Json的几种方法

本文介绍了在Unity开发中如何使用Unity自带的JsonUtility、Newtonsoft.Json和LitJson插件进行JSON的序列化和反序列化,包括本地文件读取,并给出了实际代码示例和实体类的编写方法。
摘要由CSDN通过智能技术生成

存入和读取JSON工具      

目录

存入和读取JSON工具

读取本地Json文件


1、unity自带方法

类名:JsonUtility         

序列化:ToJson()                   

反序列化:FromJson<>()        

用于接收的JSON实体类需要声明[Serializable] 序列化

实体类中的成员变量要是字段而不是属性{get;set;}

处理数组的话,外面再包裹一层对象

2、Newtonsoft插件

类名:JsonConvert     

序列化:SerializeObject()       

反序列化:DeserializeObject<>()

3、LitJson插件

类名:JsonMapper       

序列化:ToJson()                   

反序列化:ToObject<>()

实体类可以不用声明[Serializable]

实体类中的成员变量可以是字段也可以是属性{get;set;}

可以直接处理数组

读取本地Json文件

(1)json文件放在Resources文件夹中
     1、使用Resources.Load<TextAsset>方法读取
     string jsonFilePath = "JsonFileName";    // 不带扩展名
     TextAsset jsonTextAsset = Resources.Load<TextAsset>(jsonFilePath);
     string jsonFileContent = jsonTextAsset.text;

(2)json文件放到StreamingAssets文件夹

     1、使用Application.streamingAssetsPath获取路径:
     string jsonFilePath = Path.Combine(Application.streamingAssetsPath,                                                                                                                           "example.json");
     2、使用Application.dataPath获取路径
     string jsonFilePath =               Path.Combine(Application.dataPath,"StreamingAssets/example.json.bytes");
        using (StreamReader reader = new StreamReader(jsonFilePath))
         { 
                  string jsonContent = reader.ReadToEnd();
                  // 在这里可以使用jsonContent进行进一步的处理‘
                  Debug.Log("JSON内容:" +    jsonContent); 
          }

 (3)json文件放到Assets下

      1、使用Application.dataPath获取路径
     string json = File.ReadAllText(Application.dataPath+"/taskInfo.json");
     Root  root = JsonUtility.FromJson<Root>(json); 

举例

{

    "msg": "成功!",

    "code": 1,

    "data": {

        "teacher": "cao",

        "age": "52",

        "subject": "math",

        "students":[ 
                {
                    "name": "wang",

                    "age": "20",

                    "grade": "79",

                    "number": "6" },
                {
                    "name": "zhang",

                    "age": "22",

                    "grade": "91",

                    "number": "5" }
                  ]            
          }        
}

需要写好实体类来接受


    public class Root
    {
        public string msg;
        public int code;
        public DataM data;
    }

    public class DataM 
    {
        public string teacher;
        public int age;
        public int subject;
        public List<Student> students;
    }

    public class Student
    {
        public string name;
        public int age;
        public int grade;
        public int number;
    }

现在读取Resources文件夹下的json文件,这里我是用的是LitJson插件

//获取json数据(此处读取本地上的json文件)
TextAsset jsonTextAsset = Resources.Load<TextAsset>(jsonFilePath);
string jsonInfo = jsonTextAsset.text;

//json转类
Root root = JsonMapper.ToObject<Root>(jsonInfo);

//遍历获得数据
 foreach (var DataM in root.data)
{

    Debug.Log(DataM.techer);             //————> cao
    Debug.Log(DataM.age);                //————> 52
    Debug.Log(DataM.students[0].name);   //————> wang
    Debug.Log(DataM.students[1].grade);  //————> 91

}

  • 43
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Unity读取JSON数据,可以使用JsonUtility类。JsonUtility类可以将JSON数据转换成C#对象,也可以将C#对象转换成JSON数据。 以下是一个示例代码,演示如何使用JsonUtility类读取JSON数据: ```csharp using UnityEngine; using System.IO; public class JsonReader : MonoBehaviour { // JSON文件路径 public string jsonFilePath; // 定义一个表示JSON数据的类 [System.Serializable] public class JsonData { public string name; public int age; public string[] hobbies; } void Start() { // 读取JSON文件内容 string jsonContent = File.ReadAllText(jsonFilePath); // 将JSON数据转换成C#对象 JsonData jsonData = JsonUtility.FromJson<JsonData>(jsonContent); // 输出读取到的数据 Debug.Log("Name: " + jsonData.name); Debug.Log("Age: " + jsonData.age); Debug.Log("Hobbies: " + string.Join(", ", jsonData.hobbies)); } } ``` 在上面的示例代码中,我们首先定义了一个表示JSON数据的类JsonData。然后在Start函数中,我们使用File.ReadAllText方法读取JSON文件内容,并使用JsonUtility.FromJson方法JSON数据转换成JsonData对象。最后,我们输出读取到的数据。 需要注意的是,在使用JsonUtility类时,C#对象的字段名必须与JSON数据中的键名一致,否则无法正确解析JSON数据。 ### 回答2: Unity是一款跨平台的游戏开发引擎,它可以方便地读取和解析JSON数据。在Unity中,我们可以使用C#JsonUtility类来实现对JSON数据的读取。 首先,我们需要将JSON数据保存在Unity项目中的某个位置,比如在Assets文件夹下创建一个名为"Data"的文件夹,并将JSON文件放入其中。接下来,我们就可以使用JsonUtility来读取和解析JSON数据了。 首先,需要创建一个类来存储JSON数据的结构。假设我们有一个名为"PlayerInfo"的类来存储玩家信息: ```csharp [System.Serializable] public class PlayerInfo { public string playerName; public int playerScore; } ``` 接下来,在读取JSON数据的脚本中,我们可以使用JsonUtility类来读取和解析JSON数据。假设我们将JSON文件命名为"player.json",并放在"Data"文件夹中: ```csharp using UnityEngine; using System.IO; public class JSONReader : MonoBehaviour { void Start() { // 读取JSON文件的路径 string filePath = Path.Combine(Application.streamingAssetsPath, "Data/player.json"); // 读取JSON文件的内容 string json = File.ReadAllText(filePath); // 将JSON数据解析到PlayerInfo类的实例中 PlayerInfo playerInfo = JsonUtility.FromJson<PlayerInfo>(json); // 打印解析后的玩家信息 Debug.Log("Player Name: " + playerInfo.playerName); Debug.Log("Player Score: " + playerInfo.playerScore); } } ``` 以上就是使用Unity读取JSON数据的简单示例。需要注意的是,由于JSON文件Unity的StreamingAssets文件夹中,因此在构建发布版本时,需要将JSON文件复制到构建目标的对应文件夹中,才能在运行时正确读取JSON数据。 ### 回答3: Unity是一个游戏开发引擎,可以用于创建各种类型的游戏。在Unity读取JSON数据十分简单和方便。 首先,我们需要将JSON文件加载到游戏中。可以使用Unity的资源加载功能,将JSON文件添加为一个游戏资源,使其可以在游戏中访问。 一旦JSON文件加载到游戏中,我们可以使用JsonUtility类来解析JSON数据。JsonUtility类提供了一些静态方法,可以将JSON字符串转换成可以在Unity中使用的对象。 例如,我们可以使用JsonUtility.FromJson方法JSON字符串转换成自定义的C#对象。只需传入JSON字符串和目标对象的类型作为参数,就可以得到解析后的对象。 有了解析后的对象,我们就可以通过访问其属性或字段来获取JSON中的数据。如果JSON特别复杂,我们也可以使用嵌套对象来表示JSON的层次结构。 另外,如果我们想将C#对象转换成JSON字符串,可以使用JsonUtility.ToJson方法。只需将目标对象作为参数传入,就可以得到相应的JSON字符串。 总的来说,Unity读取JSON非常简单,只需将JSON文件加载到游戏中,然后使用JsonUtility类来解析JSON数据即可。这样我们就可以轻松地在Unity中使用JSON数据了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值