使用Newtonsoft.Json
using Newtonsoft.Json;
using System.Collections;
using System.IO;
using System.Text;
using UnityEditor;
using UnityEngine;
using UnityEngine.Networking;
using Newtonsoft.Json.Linq;
public class SetJson : MonoBehaviour
{
private string path = Application.streamingAssetsPath + "/save.json";
private string content;
private int[] nums = { 20, 50, 40, 100 };
private TestStruct[] testStructs;
//----------
public StudentData data;
private void Start()
{
CreateFile();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
StartCoroutine(ReadJson());
}
if (Input.GetKeyDown(KeyCode.M))
{
StartCoroutine(JsonToObject());
}
if (Input.GetKeyDown(KeyCode.N))
{
ChangeJson();
}
}
private void CreateFile()
{
Grade grade = new Grade();
grade.math = 80;
grade.physics = 80;
grade.english = 80;
testStructs = new TestStruct[10];
for (int i = 0; i < 10; i++)
{
testStructs[i].name = "Test_" + i;
testStructs[i].content = "content_" + i;
}
StudentData studentData = new StudentData();
studentData.id = 1001;
studentData.name = "Test";
studentData.sexType = SexType.Male;
studentData.age = 20;
studentData.bCylet = false;
studentData.grade = grade;
studentData.nums = nums;
studentData.testStructs = testStructs;
content = JsonConvert.SerializeObject(studentData);
Save(content);
// Debug.Log("path:"+path);
}
public void Save(string content)
{
FileInfo file = new FileInfo(path);//判断文件是否存在
if (!file.Exists) //此方法只能在Windows平台
{
FileStream fs = new FileStream(path, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
byte[] bytes = new UTF8Encoding().GetBytes(content);
fs.Write(bytes, 0, bytes.Length);
fs.Close();
Debug.Log("Create OK");
AssetDatabase.Refresh();
}
else
{
Debug.Log("已存在json");
}
}
private IEnumerator ReadJson()
{
UnityWebRequest unityWebRequest = UnityWebRequest.Get(path);
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.isNetworkError)
{
Debug.LogError("出错");
}
string content = unityWebRequest.downloadHandler.text;
data = JsonConvert.DeserializeObject<StudentData>(content);
Debug.LogError(data.testStructs[1].name);
}
private void ChangeJson()
{
if (File.Exists(path))
File.Delete(path);
if (data == null)
{
StartCoroutine(ReadJson());
}
data.testStructs[1].name = "000000";
content = JsonConvert.SerializeObject(data);
Save(content);
Debug.Log("Change OK");
}
private IEnumerator JsonToObject()
{
UnityWebRequest unityWebRequest = UnityWebRequest.Get(path);
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.isNetworkError)
{
Debug.LogError("出错");
}
string content = unityWebRequest.downloadHandler.text;
JObject jobject = (JObject)JsonConvert.DeserializeObject(content);
Debug.LogError(jobject["id"]);
}
}
JSON结构


网友评论