2016-12-03 3 views
4

コレクションを初期状態に初期化するクラスがあります。保存したJSONからオブジェクトを読み込むと、コレクションを上書きするのではなく値が追加されます。値を追加するのではなく、デシリアライズするときにJSON.Netにコレクションを置き換える方法がありますか?JSON.Netコレクションは、デシリアライズされたJSONから上書きされないデフォルトのコンストラクタで初期化されます

void Main() { 
    string probMatrix = "{\"Threshold\":0.0276,\"Matrix\":[[-8.9,23.1,4.5],[7.9,2.4,4.5],[9.4,1.4,6.3]]}"; 
    var probabiltyMatrix = JsonConvert.DeserializeObject<ProbabiltyMatrix>(probMatrix); 
    probabiltyMatrix.Dump(); 
} 

// Define other methods and classes here 
public class ProbabiltyMatrix { 

    public ProbabiltyMatrix() { 
     // Initialize the probabilty matrix 
     Matrix = new List<double[]>(); 
     var matrixSize = 3; 
     for (var i = 0; i < matrixSize; i++) { 
      var probArray = new double[matrixSize]; 
      for (var j = 0; j < matrixSize; j++) { 
       probArray[j] = 0.0; 
      } 
     Matrix.Add(probArray); 
     } 
    } 

    public double Threshold; 
    public List<double[]> Matrix; 
} 

答えて

3

はい。 ObjectCreationHandlingの設定をReplaceに設定します。デフォルトはAutoです。

var settings = new JsonSerializerSettings(); 
settings.ObjectCreationHandling = ObjectCreationHandling.Replace; 

var probabiltyMatrix = JsonConvert.DeserializeObject<ProbabiltyMatrix>(probMatrix, settings); 

フィドル:https://dotnetfiddle.net/aBZiim

+0

+1これは素晴らしいです!私は本当にあなたに感謝したいので、ありがとうと言っていない警告を気にしない!ありがとうございました! –

関連する問題