2017-06-27 22 views
0

Unity 3dのJsonUtilityを使用してJSONファイルから項目を削除する最適な方法は何ですか?UnityでJsonUtilityを使用してJSON文字列から項目を削除する最も良い方法3d

ロードする必要があると想定していますが、解析する必要がありますか、リストに変換する必要がありますか?

操作が完了したら、保存します。 中間部分の助けがあれば助けになります。 ありがとう!

答えて

1

ロードする必要があると想定していますが、解析する必要がありますか? をリストに変換しますか?

はい、JsonUtilityでは、読み込んでリストに変換してから項目を削除する必要があります。まず、アイテムには、それを識別して削除するために使用できる変数が必要です。削除するアイテムの名前が "ken"であるとします。

シリアライズとデシリアライズロードするテストデータ:

[Serializable] 
public class PlayerData 
{ 
    public string name; 
    public int score; 
} 

ロード(配列が戻っリストに変換してロードする必要があります):

string jsonToLoad = PlayerPrefs.GetString("Data"); 
//Load as Array 
PlayerData[] _tempLoadListData = JsonHelper.FromJson<PlayerData>(jsonToLoad); 
//Convert to List 
List<PlayerData> loadListData = _tempLoadListData.OfType<PlayerData>().ToList(); 

すべての「ケン」の項目を削除

for (int i = 0; i < loadListData.Count; i++) 
{ 
    if (loadListData[i].name == "ken") 
    { 
     loadListData.Remove(loadListData[i]); 
    } 
} 

またはLINQのと:

loadListData.RemoveAll((x) => x.name == "ken"); 

次に、あなたはそれを保存することができます:あなたのotherの記事で述べたように

string jsonToSave = JsonHelper.ToJson(loadListData.ToArray()); 
PlayerPrefs.SetString("Data", jsonToSave); 
PlayerPrefs.Save(); 

のうち、もちろん、あなたがJsonHelperが必要になります。

+0

THANKSプログラマー! –

+0

問題ありません。一度ロードするだけでよいので、ロードしたjsonデータを終了してから保存する必要があるまで変更することができます。 – Programmer

+0

kenが変数の場合はどうしたらいいですか? –

関連する問題