使用Unity 3d中的JsonUtility从JSON字符串中删除项目的最佳方法

时间:2017-06-27 23:17:28

标签: c# json unity3d

使用Unity 3d的JsonUtility从JSON文件中删除项目的最佳方法是什么?

我假设您必须加载它,但是:它是否需要解析或转换为列表?

操作完成后,保存。 对中间部分的任何帮助都会有所帮助。 谢谢!

1 个答案:

答案 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