Unity JSON将数据添加到现有的json数据
我正在为多个数据库设置创建索引。 每次创建新数据库时,我都需要一个索引,以便该人可以连接到他们想要处理的数据库。 将索引保存在json文件中后,一旦我再次加载它,如何在不删除现有数据的情况下添加它? 我看过的大多数教程都告诉你如何保存和加载但不能用现有数据做什么。 谢谢! 虽然我正在使用JSONUtility,因为这是一个非常简单的操作,但我不反对任何其他库的建议。
您可以通过将Json保存为List
来真正简化此操作。 如果要修改现有的,只需加载它并继续使用Add
function添加到List中。 只有在必要时才保存。
Unity的JSONUtility
无法序列化/反序列化数组或List,因此我们需要使用基于JsonHelper
构建的JsonHelper
包装器。 你可以在这里得到它。
测试数据以加载序列化和反序列化:
[Serializable] public class PlayerData { public string name; public int score; }
创建它的列表和它:
List saveListData = new List (); PlayerData saveData = new PlayerData(); saveData.name = "Programmer"; saveData.score = 80; saveListData.Add(saveData);
保存(必须转换为数组才能保存):
string jsonToSave = JsonHelper.ToJson(saveListData.ToArray()); PlayerPrefs.SetString("Data", jsonToSave); PlayerPrefs.Save();
加载(必须作为数组加载然后转换回List):
string jsonToLoad = PlayerPrefs.GetString("Data"); //Load as Array PlayerData[] _tempLoadListData = JsonHelper.FromJson(jsonToLoad); //Convert to List List loadListData = _tempLoadListData.OfType ().ToList(); for (int i = 0; i < loadListData.Count; i++) { Debug.Log("Got: " + loadListData[i].name); }
在加载的数据中添加更多内容?
loadListData.Add(new PlayerData()); loadListData.Add(new PlayerData()); loadListData.Add(new PlayerData()); loadListData.Add(new PlayerData());
然后,您可以再次保存它。
读入现有的JSON(如果存在),将其保存在字符串中。 然后,当您准备保存时,您只需将旧JSON连接到新生成的JSON并保存到磁盘。
提示:如果你还没有使用Json.NET。