さまざまなリストを「遅延作成」するレガシーオブジェクトをシリアル化しようとしています。従来の動作を変更できません。
私はそれをこの簡単な例に煮詰めました:
public class Junk
{
protected int _id;
[JsonProperty( PropertyName = "Identity" )]
public int ID
{
get
{
return _id;
}
set
{
_id = value;
}
}
protected List<int> _numbers;
public List<int> Numbers
{
get
{
if( null == _numbers )
{
_numbers = new List<int>( );
}
return _numbers;
}
set
{
_numbers = value;
}
}
}
class Program
{
static void Main( string[] args )
{
Junk j = new Junk( ) { ID = 123 };
string newtonSoftJson = JsonConvert.SerializeObject( j, Newtonsoft.Json.Formatting.Indented );
Console.WriteLine( newtonSoftJson );
}
}
現在の結果: { "Identity": 123, "Numbers": [] }
取得したい: { "Identity": 123 }
つまり、空のリスト、コレクション、配列などをスキップしたいと思います。