2016-08-16 33 views
0

私のコードをfloatedPluginというプロパティから、floatedPluginsというプロパティ( 's'に注意)を使用することに変更しています。このコードが実行された後で、私はfloatedPluginが全く存在する必要はありません。既存のfloatedPluginの値は、オブジェクトまたはnullのいずれかになります。 nullの場合は、floatedPluginsを空の配列に設定します。 floatedPluginがオブジェクトの場合は、floatedPluginsに、そのオブジェクトのみを含む配列を設定します。C#の空のリストをJSONの空の配列にシリアル化する方法は?

foreach (var _case in context.Cases) 
{ 
    dynamic data = JsonConvert.DeserializeObject(_case.Data); 

    foreach (var row in data.myRows) 
    { 
     foreach (var plugin in row.plugins) 
     { 
      if (plugin.floatedPlugin == null) 
      { 
       plugin.floatedPlugins = new List<dynamic>(); // Code breaks here 
      } 
      else 
      { 
       plugin.floatedPlugins = new List<dynamic>(plugin.floatedPlugin); 
      } 
     } 
    } 
    _case.Data = JsonConvert.SerializeObject(data); 
} 

これは

Could not determine JSON object type for type System.Collections.Generic.List`1[System.Object]. 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Could not determine JSON object type for type System.Collections.Generic.List`1[System.Object]. 

で実行しようとしたときに私が取得エラー私は結果の直列化されたJSONで[]にシリアライズするfloatedPluginsを取得するために行う必要がありますか?

+1

ありがとう、それは私が探していたものでした。重複してこれを閉じるために投票しました。 – TW80000

答えて

2

あなたが扱っている値は実際にはJObjectです。それは自動的にいくつかの標準タイプ(intのような)を適切なJValueオブジェクトに変換する方法を知っていますが、もっと複雑なものは明示的にある種のJTokenに変換する必要があります。

plugin.floatedPlugins = JArray.FromObject(new List<dynamic>()); 
関連する問題