Dot-Net

如何排除某些成員被序列化為 Json?

  • September 6, 2017

我有一個對象,我想序列化為我正在使用的 Json 格式:

   public string ToJson()
   {
       JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
       string sJSON = jsonSerializer.Serialize(this);
       return sJSON;
   }

如何將“this”中的某些欄位定義為不被序列化?

可能的方法是將這些欄位聲明為privateor internal

另一種解決方案是使用DataContractJsonSerializer類。在這種情況下,您將DataContract屬性添加到您的類。您可以使用屬性控制要序列化的DataMember成員 - 標記有它的所有成員都被序列化,而其他成員則沒有。

你應該重寫你的 ToJson 方法如下:

   public string ToJson()
   {
       DataContractJsonSerializer jsonSerializer = 
             new DataContractJsonSerializer(typeof(<your class name>));
       MemoryStream ms = new MemoryStream();
       jsonSerializer.WriteObject(ms, this);
       string json = Encoding.Default.GetString(ms.ToArray());
       ms.Dispose();
       return json;
   }

使用ScriptIgnoreAttribute

引用自:https://stackoverflow.com/questions/6422794