使用Unity 3d的JsonUtility从JSON文件中删除项目的最佳方法是什么?
我假设您必须加载它,但是:它是否需要解析或转换为列表?
操作完成后,保存。 对中间部分的任何帮助都会有所帮助。 谢谢!
答案 0 :(得分:1)
我假设您必须加载它,但是:它是否需要解析或 转换成一个列表?
是的,使用JsonUtility,您必须加载它,将其转换为List然后从中删除该项目。首先,该项必须有一个可用于识别和删除它的变量。让我们说要删除的项目的名称是" ken&#34 ;;
测试数据以加载序列化和反序列化:
[Serializable]
public class PlayerData
{
public string name;
public int score;
}
加载(必须作为数组加载,然后转换回List):
string jsonToLoad = PlayerPrefs.GetString("Data");
//Load as Array
PlayerData[] _tempLoadListData = JsonHelper.FromJson<PlayerData>(jsonToLoad);
//Convert to List
List<PlayerData> loadListData = _tempLoadListData.OfType<PlayerData>().ToList();
删除所有&#34; ken&#34;项目:
for (int i = 0; i < loadListData.Count; i++)
{
if (loadListData[i].name == "ken")
{
loadListData.Remove(loadListData[i]);
}
}
或与Linq:
loadListData.RemoveAll((x) => x.name == "ken");
然后你可以保存它:
string jsonToSave = JsonHelper.ToJson(loadListData.ToArray());
PlayerPrefs.SetString("Data", jsonToSave);
PlayerPrefs.Save();
当然,您需要other帖子中提到的JsonHelper
。