DataContractJsonSerializer
カスタム オブジェクトを JSON にシリアル化するために使用しています。しかし、値が であるデータ メンバーをスキップしたいnull
。DataMember
そのノードがnull
JSON 文字列に含まれていない場合。
どうすればこれを達成できますか?簡単code snippet
に操作できます。
DataContractJsonSerializer
カスタム オブジェクトを JSON にシリアル化するために使用しています。しかし、値が であるデータ メンバーをスキップしたいnull
。DataMember
そのノードがnull
JSON 文字列に含まれていない場合。
どうすればこれを達成できますか?簡単code snippet
に操作できます。
EmitDefaultValue = false
属性でプロパティを使用でき[DataMember]
ます。その属性でマークされたメンバーの場合、それらの値は出力されません。
[DataContract]
public class MyType
{
[DataMember(EmitDefaultValue = false)]
public string Prop1 { get; set; }
[DataMember(EmitDefaultValue = false)]
public string Prop2 { get; set; }
[DataMember(EmitDefaultValue = false)]
public string Prop3 { get; set; }
}
public class Test
{
public static void Main()
{
var dcjs = new DataContractJsonSerializer(typeof(MyType));
var ms = new MemoryStream();
var data = new MyType { Prop2 = "Hello" };
dcjs.WriteObject(ms, data);
// This will write {"Prop2":"Hello"}
Console.WriteLine(Encoding.UTF8.GetString(ms.ToArray()));
}
}