如何将数据从litJson保存文件添加到列表
本文关键字:保存文件 添加 列表 litJson 数据 | 更新日期: 2023-09-27 18:15:15
我要做的是将我保存在litjson文件中的数据添加到列表中,并以正确的格式。所以我可以稍后在游戏中将其称为图标。下面是代码,所以它应该很容易重新创建来测试我遇到的问题。
JsonIcons
class:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
[System.Serializable]
public class JsonIcons {
public string IconName;//Shows the icon Name in the list
public int IconID;// Shows the Icon ID in the list
public Sprite AssignIcon;
public JsonIcons(string Name, int ID )
{
IconName = Name;
IconID = ID;
}
public JsonIcons()
{
}
}
JsonTest
class:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using LitJson;
using System.IO;
//This class that does the saving
public class JsonTest : MonoBehaviour {
public List<JsonIcons> JIcon = new List<JsonIcons>();
public JsonData JCD;
protected JsonIcons KZ, TestTK;
public void Start()
{
TestTK = new JsonIcons("Kagami", 40);
KZ = new JsonIcons("Magic", 0);
JIcon.Add(TestTK); //Add things to the list to be save
JIcon.Add(KZ);
JCD = JsonMapper.ToJson(JIcon);
//This is where I saved the things inside the JIcon list to a Json file
File.WriteAllText(Application.dataPath + "/JsonSaveTest.json", JCD.ToString());
//Debug.Log(JCD);
}
}
JsonReadTest
class:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using LitJson;
public class JsonReadTest : MonoBehaviour {
public List<JsonIcons> ReadSJ = new List<JsonIcons>();
private string JString;
public JsonData IconData;
// Use this for initialization
void Start ()
{
//Trying to get this file to load in the correct format inside the ReadSJ list
JString = File.ReadAllText(Application.dataPath + "/JsonFiles/JsonSaveTest.json");
IconData = JsonMapper.ToObject(JString);
}
}
您可以创建一个名为JsonIconList的类,它将只包含一个列表(顺便说一下,您应该将JsonIcons重命名为JsonIcon,因为它代表单个项目)。然后你可以很容易地用JsonMapper类对它进行反序列化。
另一种方法是有一个像这样的通用包装器类
[Serializable]
private class ListWrapper<T>
{
public List<T> Items;
}
然后创建一个辅助方法
public static class JsonHelper
{
public static List<T> ToList<T>(string json)
{
ListWrapper<T> wrapper = JsonMapper.ToObject<ListWrapper<T>>(json);
return wrapper.Items;
}
}
像这样使用
List<JsonIcon> icons = JsonHelper.ToList<JsonIcon>(jsonString);