当前位置:   article > 正文

Unity读取Json的几种方法_unity读取json文件

unity读取json文件

存入和读取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); 

举例

  1. {
  2.     "msg": "成功!",
  3.     "code": 1,
  4.     "data": {
  5. "teacher": "cao",
  6.         "age": "52",
  7.         "subject": "math",
  8.         "students":[
  9. {
  10. "name": "wang",
  11. "age": "20",
  12.         "grade": "79",
  13.         "number": "6" },
  14. {
  15. "name": "zhang",
  16. "age": "22",
  17.         "grade": "91",
  18.         "number": "5" }
  19. ]
  20. }       
  21. }

需要写好实体类来接受

  1. public class Root
  2. {
  3. public string msg;
  4. public int code;
  5. public DataM data;
  6. }
  7. public class DataM
  8. {
  9. public string teacher;
  10. public int age;
  11. public int subject;
  12. public List<Student> students;
  13. }
  14. public class Student
  15. {
  16. public string name;
  17. public int age;
  18. public int grade;
  19. public int number;
  20. }

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

  1. //获取json数据(此处读取本地上的json文件)
  2. TextAsset jsonTextAsset = Resources.Load<TextAsset>(jsonFilePath);
  3. string jsonInfo = jsonTextAsset.text;
  4. //json转类
  5. Root root = JsonMapper.ToObject<Root>(jsonInfo);
  6. //遍历获得数据
  7.  foreach (var DataM in root.data)
  8. {
  9.     Debug.Log(DataM.techer); //————> cao
  10. Debug.Log(DataM.age); //————> 52
  11. Debug.Log(DataM.students[0].name); //————> wang
  12. Debug.Log(DataM.students[1].grade); //————> 91
  13. }

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

闽ICP备14008679号