1. JsonUtility liest und schreibt Josn-Dateien
(1) Json-Datei lesen
JsonUtility.FromJson<TestJson>(File.ReadAllText(JsonPath))
JsonUtility.FromJson<Json-Strukturklasse>(File.ReadAllText(Json-Dateiadresse))
(2) In die Josn-Datei schreiben
File.WriteAllText(JsonPath, JsonUtility.ToJson(TJ))
JsonPath Json-Pfad
JsonUtility.ToJson(TJ) wandelt die geänderten Josn-Daten in einen String um
2. Verwenden Sie die Datei LitJson.dll, um Json-Dateien zu lesen und zu schreiben (Sie müssen die Datei LitJson.dll separat herunterladen).
Wenn Sie LitJson zum Parsen von Dateien verwenden, müssen Sie auf LitJson.dll verweisen.
(1) Json-Datei lesen
JsonMapper.ToObject<TestJson>(File.ReadAllText(JsonPath));
(2) Json-Datei schreiben
File.WriteAllText(JsonPath, JsonMapper.ToJson(TJ));
Lesen Sie Json-Dateien mit der JsonUtility-API
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
//using LitJson;
public class ReadJson : MonoBehaviour
{
private string JsonPath=Application.streamingAssetsPath+ "/TestJson.Json";
public static TestJson TJ=new TestJson ();
// Start is called before the first frame update
void Start()
{
JsonRead();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.R))
{
Debug.Log("读取Json文件");
JsonRead();
}if (Input.GetKeyDown(KeyCode.W))
{
Debug.Log("写入json");
JsonWrite();
}
}
/// <summary>
/// 读取Json文件
/// </summary>
public void JsonRead()
{
if (!File.Exists(JsonPath))//判断地址是否存在,如果不存在则提示并中直以下操作
{
Debug.LogError("地址不存在"+JsonPath);
return;
}
TJ =JsonUtility.FromJson<TestJson>(File.ReadAllText(JsonPath));//使用File读取字符串内容,并使用JsonUtility读取到的文件解析为json数据
// TJ = JsonMapper.ToObject<TestJson>(File.ReadAllText(JsonPath));//使用LitJson读取字符内容,并将读取到的文件解析为json数据
Debug.Log("ID:"+TJ.ID);//打印读取对应的Id属性
Debug.Log("Name:"+TJ.Name);//打印读取对应的Name属性
Debug.Log("装备数量:"+TJ.Equips.Count);//打印读取对应的装备数量
foreach (var item in TJ.Equips)//打印装备数组中的每个装备的数据
{
Debug.Log("装备名称:"+item.Name+"\n"+
"装备类型:"+item.Label+"\n"+
"装备伤害:"+item.Damage+"\n"+
"装备防御:"+item.DefenseValue+"\n"+
"装备描述:"+item.Describe);
}
}
/// <summary>
/// 写入json文件
/// </summary>
public void JsonWrite()
{
if (!File.Exists(JsonPath))//判断地址是否存在,如果不存在则提示并中直以下操作
{
Debug.LogError("地址不存在" + JsonPath);
return;
}
TJ.Equips[1].Name = "双手剑";
TJ.Equips[1].Label = "武器";
TJ.Equips[1].Damage = "888";
TJ.Equips[1].DefenseValue = "25";
TJ.Equips[1].Describe = "这把双手剑的造型非常漂亮,从上面散发的光芒就可以感觉到此剑的非凡。";
foreach (var item in TJ.Equips)//打印装备数组中的每个装备的数据
{
Debug.Log("装备名称:" + item.Name + "\n" +
"装备类型:" + item.Label + "\n" +
"装备伤害:" + item.Damage + "\n" +
"装备防御:" + item.DefenseValue + "\n" +
"装备描述:" + item.Describe);
}
File.WriteAllText(JsonPath, JsonUtility.ToJson(TJ));//使用JsonUtility写入Json内容
//File.WriteAllText(JsonPath, JsonMapper.ToJson(TJ));//使用LitJson写入Json内容
TJ = JsonUtility.FromJson<TestJson>(File.ReadAllText(JsonPath));//使用File读取Json内容,并将读取到的文件解析为json数据
}
}
[Serializable]
public class TestJson
{
public string ID;
public string Name;
public List<Equips> Equips;
}
[Serializable]
public class Equips
{
/// <summary>
/// 名称
/// </summary>
public string Name;
/// <summary>
/// 标签
/// </summary>
public string Label;
/// <summary>
/// 伤害
/// </summary>
public string Damage;
/// <summary>
/// 防御值
/// </summary>
public string DefenseValue;
/// <summary>
/// 装备描述
/// </summary>
public string Describe;
}
Auf JSON-Datei antworten
{
"ID": 6963,
"Name": "测试用",
"Equips": [
{
"Name": "头盔",
"Label": "防具",
"Damage": 12,
"DefenseValue": 123,
"Describe": "这是一个坚固的头盔"
},
{
"Name": "大剑",
"Label": "武器",
"Damage": 666,
"DefenseValue": 13,
"Describe": "这把大剑锈上面有一些历史的痕迹"
}
]
}