当前位置:   article > 正文

【Unity 3D】C#从JSON文件中读取、解析、保存数据(附源码)_c#获取json对象的数据

c#获取json对象的数据

JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式存储和表示数据,简洁和清晰的层次结构使JSON成为理想的数据交换语言,易于读者阅读和编写,同时也易于机器解析和生成,并有效的提高网络传输效率

1:写入JSON数据

生成JSON数据实例代码如下

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Test_15_1 : MonoBehaviour
  5. {
  6. void Start()
  7. {
  8. WriteData();
  9. }
  10. //写数据
  11. public void WriteData()
  12. {
  13. //新建一个数据类
  14. Data m_Data = new Data();
  15. //新建一个字段类 进行赋值
  16. m_Data.Person = new Person[3];
  17. //添加数据
  18. Person p1 = new Person();
  19. p1.Name = "张三";
  20. p1.Grade = 98;
  21. m_Data.Person[0] = p1;
  22. Person p2 = new Person();
  23. p2.Name = "李四";
  24. p2.Grade = 95;
  25. m_Data.Person[1] = p2;
  26. Person p3 = new Person();
  27. p3.Name = "王五";
  28. p3.Grade = 97;
  29. m_Data.Person[2] = p3;
  30. //将数据转成json
  31. string js = JsonUtility.ToJson(m_Data);
  32. //显示Json数据
  33. Debug.Log(js);
  34. }
  35. }
  36. [System.Serializable]
  37. class Person
  38. {
  39. public string Name;
  40. public int Grade;
  41. }
  42. [System.Serializable]
  43. class Data
  44. {
  45. public Person[] Person;
  46. }

2:将JSON数据保存到本地文件夹

下面的代码将JSON中数据以文本格式保存到本地文件夹

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class Test_15_2 : MonoBehaviour
  5. {
  6. void Start()
  7. {
  8. WriteData();
  9. }
  10. //写数据
  11. public void WriteData()
  12. {
  13. //新建一个数据类
  14. Data m_Data = new Data();
  15. //新建一个字段类 进行赋值
  16. m_Data.Person = new Person[3];
  17. //添加数据
  18. Person p1 = new Person();
  19. p1.Name = "张三";
  20. p1.Grade = 98;
  21. m_Data.Person[0] = p1;
  22. Person p2 = new Person();
  23. p2.Name = "李四";
  24. p2.Grade = 95;
  25. m_Data.Person[1] = p2;
  26. Person p3 = new Person();
  27. p3.Name = "王五";
  28. p3.Grade = 97;
  29. m_Data.Person[2] = p3;
  30. //将数据转成json
  31. string js = JsonUtility.ToJson(m_Data);
  32. //保存到 C盘的 Temp文件夹
  33. //下面的代码改变保存路径即可
  34. string fileUrl = @"c:\Temp\jsonInfo.txt";
  35. //打开或者新建文档
  36. StreamWriter sw = new StreamWriter(fileUrl);
  37. //保存数据
  38. sw.WriteLine(js);
  39. //关闭文档
  40. sw.Close();
  41. }
  42. }
  43. [System.Serializable]
  44. class Person
  45. {
  46. public string Name;
  47. public int Grade;
  48. }
  49. [System.Serializable]
  50. class Data
  51. {
  52. public Person[] Person;
  53. }

3:读取JSON数据

读取JSON数据用到了之前讲解过的文件的输入与输出,将使用StreamReader从文件夹中读取流数据

  1. using System.IO;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. public class Test_15_3 : MonoBehaviour
  6. {
  7. void Start()
  8. {
  9. string jsonData = ReadData();
  10. Debug.Log(jsonData);
  11. }
  12. //读取文件
  13. public string ReadData()
  14. {
  15. //获取到路径
  16. string fileUrl = @"c:\Temp\jsonInfo.txt";
  17. //读取文件
  18. StreamReader str = File.OpenText(fileUrl);
  19. //string类型的数据常量
  20. //数据保存
  21. string readData = str.ReadToEnd();
  22. str.Close();
  23. //返回数据
  24. return readData;
  25. }
  26. }

4:解析JSON数据

解析JSON数据,需要生成与JSON数据类型相同的字段,如果JSON数据中有字段Person,Name,Grade,Person字段是一个数组,那么根节点就是一个带有Person数组字段的类,然后这个Person字段本身也是一个类,里面有Name和Grade字段 解析JSON数据代码如下

  1. using System.IO;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. public class Test_15_4 : MonoBehaviour
  6. {
  7. void Start()
  8. {
  9. //首先获取到json数据
  10. string json = ReadData();
  11. //将json数据传递给ParseData函数进行解析
  12. ParseData(json);
  13. }
  14. //读取文件
  15. public string ReadData()
  16. {
  17. //获取到路径
  18. string fileUrl = @"c:\Temp\jsonInfo.txt";
  19. //读取文件
  20. StreamReader str = File.OpenText(fileUrl);
  21. //string类型的数据常量
  22. //数据保存
  23. string readData = str.ReadToEnd();
  24. str.Close();
  25. //返回数据
  26. return readData;
  27. }
  28. //解析Json数据
  29. public void ParseData(string jsonData)
  30. {
  31. //数据解析并把数据保存到m_PersonData1 变量中
  32. Data m_PersonData = JsonUtility.FromJson<Data>(jsonData);
  33. foreach (var item in m_PersonData.Person)
  34. {
  35. Debug.Log(item.Name);
  36. Debug.Log(item.Grade);
  37. }
  38. }
  39. }

创作不易 觉得有帮助请点赞关注收藏~~~

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

闽ICP备14008679号