JSON是一種輕量級的數(shù)據(jù)交換格式,采用完全獨立于編程語言的文本格式存儲和表示數(shù)據(jù),簡潔和清晰的層次結(jié)構(gòu)使JSON成為理想的數(shù)據(jù)交換語言,易于讀者閱讀和編寫,同時也易于機(jī)器解析和生成,并有效的提高網(wǎng)絡(luò)傳輸效率
1:寫入JSON數(shù)據(jù)
生成JSON數(shù)據(jù)實例代碼如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_15_1 : MonoBehaviour
{
void Start()
{
WriteData();
}
//寫數(shù)據(jù)
public void WriteData()
{
//新建一個數(shù)據(jù)類
Data m_Data = new Data();
//新建一個字段類 進(jìn)行賦值
m_Data.Person = new Person[3];
//添加數(shù)據(jù)
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;
//將數(shù)據(jù)轉(zhuǎn)成json
string js = JsonUtility.ToJson(m_Data);
//顯示Json數(shù)據(jù)
Debug.Log(js);
}
}
[System.Serializable]
class Person
{
public string Name;
public int Grade;
}
[System.Serializable]
class Data
{
public Person[] Person;
}
2:將JSON數(shù)據(jù)保存到本地文件夾
下面的代碼將JSON中數(shù)據(jù)以文本格式保存到本地文件夾
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_15_2 : MonoBehaviour
{
void Start()
{
WriteData();
}
//寫數(shù)據(jù)
public void WriteData()
{
//新建一個數(shù)據(jù)類
Data m_Data = new Data();
//新建一個字段類 進(jìn)行賦值
m_Data.Person = new Person[3];
//添加數(shù)據(jù)
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;
//將數(shù)據(jù)轉(zhuǎn)成json
string js = JsonUtility.ToJson(m_Data);
//保存到 C盤的 Temp文件夾
//下面的代碼改變保存路徑即可
string fileUrl = @"c:\Temp\jsonInfo.txt";
//打開或者新建文檔
StreamWriter sw = new StreamWriter(fileUrl);
//保存數(shù)據(jù)
sw.WriteLine(js);
//關(guān)閉文檔
sw.Close();
}
}
[System.Serializable]
class Person
{
public string Name;
public int Grade;
}
[System.Serializable]
class Data
{
public Person[] Person;
}
3:讀取JSON數(shù)據(jù)
讀取JSON數(shù)據(jù)用到了之前講解過的文件的輸入與輸出,將使用StreamReader從文件夾中讀取流數(shù)據(jù)
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類型的數(shù)據(jù)常量
//數(shù)據(jù)保存
string readData = str.ReadToEnd();
str.Close();
//返回數(shù)據(jù)
return readData;
}
}
4:解析JSON數(shù)據(jù)
解析JSON數(shù)據(jù),需要生成與JSON數(shù)據(jù)類型相同的字段,如果JSON數(shù)據(jù)中有字段Person,Name,Grade,Person字段是一個數(shù)組,那么根節(jié)點就是一個帶有Person數(shù)組字段的類,然后這個Person字段本身也是一個類,里面有Name和Grade字段 解析JSON數(shù)據(jù)代碼如下文章來源:http://www.zghlxwxcb.cn/news/detail-504627.html
using System.IO;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test_15_4 : MonoBehaviour
{
void Start()
{
//首先獲取到j(luò)son數(shù)據(jù)
string json = ReadData();
//將json數(shù)據(jù)傳遞給ParseData函數(shù)進(jìn)行解析
ParseData(json);
}
//讀取文件
public string ReadData()
{
//獲取到路徑
string fileUrl = @"c:\Temp\jsonInfo.txt";
//讀取文件
StreamReader str = File.OpenText(fileUrl);
//string類型的數(shù)據(jù)常量
//數(shù)據(jù)保存
string readData = str.ReadToEnd();
str.Close();
//返回數(shù)據(jù)
return readData;
}
//解析Json數(shù)據(jù)
public void ParseData(string jsonData)
{
//數(shù)據(jù)解析并把數(shù)據(jù)保存到m_PersonData1 變量中
Data m_PersonData = JsonUtility.FromJson<Data>(jsonData);
foreach (var item in m_PersonData.Person)
{
Debug.Log(item.Name);
Debug.Log(item.Grade);
}
}
}
創(chuàng)作不易 覺得有幫助請點贊關(guān)注收藏~~~文章來源地址http://www.zghlxwxcb.cn/news/detail-504627.html
到了這里,關(guān)于【Unity 3D】C#從JSON文件中讀取、解析、保存數(shù)據(jù)(附源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!