2017-01-18 14 views
0

私はほとんど助けが必要です。私はJsonを使用してゲームの進行状況の一部を保存していますが、私は1つの問題に直面している以外はすべて動作しています。私は新しい値を保存しようとすると古いものを上書きしますが、私はそれらを保持して新しい値を追加したい古い値を上書きしたくありません。誰も小さな助けを提供することはできますか? ArgumentExceptionがをJSON(Unity3d)に新しい値を追加

string fromJson = File.ReadAllText(Application.dataPath + "/ships.json"); 
data = JsonMapper.ToObject(fromJson); 
data.Add(new SavedShips(shipsCount)); 
File.WriteAllText(Application.dataPath + "/ships.json", data.ToString()); 

しかしだ:私はここで、LiTJsonを使用してコードされています:

SavedShips savedShips = new SavedShips(shipsCount); 
    JsonData data = JsonMapper.ToJson(savedShips); 
    File.WriteAllText(Application.dataPath + "/ships.json", data.ToString()); 

私は古い値をロードし、新しいものにこのような何かを追加しようとしたJsonDataで指定されたオブジェクトをラップすることができません。 。 ありがとう!

+0

'SavedShips'とは何ですか、shipsCountとは何ですか? – Maakep

+0

Jsonをシリアライズするときに、Objectを取得してJsonの形式でテキストに変換します。 1つのオブジェクトがある場合は、それをシリアル化して前のファイルを上書きします。今のように、ファイル内の1つのオブジェクトだけを取得します。あなたがしたいのは、すべての船をリストに追加して、リストをjsonにシリアル化することです。試してみると、ファイルに保存する前にjsonにシリアル化することはありませんでしたか? – Maakep

+0

私は古い値を取得して新しい値を追加することでこれを解決する別の方法があることを知っていますが、今のところWriteAllTextをAppendAllTextに置き換えることで問題が解決されるようです。タンスク、助けて! – Yupi

答えて

0

WriteAllText()の代わりにFile.AppendText()を使用してください。

https://msdn.microsoft.com/en-us/library/system.io.file.appendtext(v=vs.110).aspx

これは、それを上書きするのではなく、ファイルの末尾に追加する必要があります。

+0

ありがとう!テストされ、動作しています。 – Yupi

+0

JSONをオブジェクトに戻す必要がある場合は、いくつか問題が発生する可能性があります。あなたがそれをする必要があるならば、私は各船/セーブのために別々のファイルを使うでしょう。あるいは、Fredrikが言ったように、代わりにリストを使用してください。または第3の選択肢。各オブジェクトを順番にデシリアライズする前にファイルを分割するメソッドを記述します。 –

関連する問題