赞
踩
JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式存储和表示数据,简洁和清晰的层次结构使JSON成为理想的数据交换语言,易于读者阅读和编写,同时也易于机器解析和生成,并有效的提高网络传输效率
生成JSON数据实例代码如下
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class Test_15_1 : MonoBehaviour
- {
- void Start()
- {
- WriteData();
- }
-
- //写数据
- public void WriteData()
- {
- //新建一个数据类
- Data m_Data = new Data();
- //新建一个字段类 进行赋值
- m_Data.Person = new Person[3];
- //添加数据
- Person p1 = new Person();
- p1.Name = "张三";
- p1.Grade = 98;
- m_Data.Person[0] = p1;
- Person p2 = new Person();
- p2.Name = "李四";
- p2.Grade = 95;
- m_Data.Person[1] = p2;
- Person p3 = new Person();
- p3.Name = "王五";
- p3.Grade = 97;
- m_Data.Person[2] = p3;
- //将数据转成json
- string js = JsonUtility.ToJson(m_Data);
- //显示Json数据
- Debug.Log(js);
- }
- }
- [System.Serializable]
- class Person
- {
- public string Name;
- public int Grade;
- }
- [System.Serializable]
- class Data
- {
- public Person[] Person;
- }
下面的代码将JSON中数据以文本格式保存到本地文件夹
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class Test_15_2 : MonoBehaviour
- {
- void Start()
- {
- WriteData();
- }
-
- //写数据
- public void WriteData()
- {
- //新建一个数据类
- Data m_Data = new Data();
- //新建一个字段类 进行赋值
- m_Data.Person = new Person[3];
- //添加数据
- Person p1 = new Person();
- p1.Name = "张三";
- p1.Grade = 98;
- m_Data.Person[0] = p1;
- Person p2 = new Person();
- p2.Name = "李四";
- p2.Grade = 95;
- m_Data.Person[1] = p2;
- Person p3 = new Person();
- p3.Name = "王五";
- p3.Grade = 97;
- m_Data.Person[2] = p3;
- //将数据转成json
- string js = JsonUtility.ToJson(m_Data);
- //保存到 C盘的 Temp文件夹
- //下面的代码改变保存路径即可
- string fileUrl = @"c:\Temp\jsonInfo.txt";
- //打开或者新建文档
- StreamWriter sw = new StreamWriter(fileUrl);
- //保存数据
- sw.WriteLine(js);
- //关闭文档
- sw.Close();
- }
- }
- [System.Serializable]
- class Person
- {
- public string Name;
- public int Grade;
- }
- [System.Serializable]
- class Data
- {
- public Person[] Person;
- }
读取JSON数据用到了之前讲解过的文件的输入与输出,将使用StreamReader从文件夹中读取流数据
- using System.IO;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class Test_15_3 : MonoBehaviour
- {
- void Start()
- {
- string jsonData = ReadData();
- Debug.Log(jsonData);
- }
- //读取文件
- public string ReadData()
- {
- //获取到路径
- string fileUrl = @"c:\Temp\jsonInfo.txt";
- //读取文件
- StreamReader str = File.OpenText(fileUrl);
- //string类型的数据常量
- //数据保存
- string readData = str.ReadToEnd();
- str.Close();
- //返回数据
- return readData;
- }
- }
解析JSON数据,需要生成与JSON数据类型相同的字段,如果JSON数据中有字段Person,Name,Grade,Person字段是一个数组,那么根节点就是一个带有Person数组字段的类,然后这个Person字段本身也是一个类,里面有Name和Grade字段 解析JSON数据代码如下
- using System.IO;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
-
- public class Test_15_4 : MonoBehaviour
- {
- void Start()
- {
- //首先获取到json数据
- string json = ReadData();
- //将json数据传递给ParseData函数进行解析
- ParseData(json);
- }
-
- //读取文件
- public string ReadData()
- {
- //获取到路径
- string fileUrl = @"c:\Temp\jsonInfo.txt";
- //读取文件
- StreamReader str = File.OpenText(fileUrl);
- //string类型的数据常量
- //数据保存
- string readData = str.ReadToEnd();
- str.Close();
- //返回数据
- return readData;
- }
-
- //解析Json数据
- public void ParseData(string jsonData)
- {
- //数据解析并把数据保存到m_PersonData1 变量中
- Data m_PersonData = JsonUtility.FromJson<Data>(jsonData);
- foreach (var item in m_PersonData.Person)
- {
- Debug.Log(item.Name);
- Debug.Log(item.Grade);
- }
- }
- }
创作不易 觉得有帮助请点赞关注收藏~~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。