头像

.Net 中Json序列化实体时忽略部分属性

接口对接中,返回的实体想要部分字段不被序列化返回。以前的做法是新建一个类做深拷贝,后来发现这方法不是很友好。

找了个不错的方法如下:

using Newtonsoft.Json;
namespace Actuator.Contacts
{
[JsonObject(MemberSerialization.OptIn)]
class ZJ
{
[JsonProperty]
public string seqid; //Varchar(50) 每条记录的时间戳标识,精确到毫秒
[JsonProperty]
public string code; //Varchar(200)设备号(终端 SN 号)
[JsonProperty]
public string pileCode;// Varchar(50) 桩编号由施工现场定义,一般为桩号

[JsonProperty]
public int isResultData = 1; // Int 是否为施工结果数据 1是,0否

[JsonIgnoreAttribute]
public int KeyId { get; set; }

}
}

附带解释
JsonObjectAttribute
这个标签的成员序列化标志指定成员序列化是opt-in(要序列化的成员必须带有JsonProperty或DataMember标签)还是opt-out(默认所有的都会序列化,但通过JsonIgnoreAttribute标签可以忽略序列化。opt-out是json.net默认的)。

JsonPropertyAttribute
允许被序列化的成员自定义名字。这个标签同时标示出:在成员序列化设置为opt-in的时候,成员会被序列化。

JsonIgnoreAttribute
忽略域或属性的序列化

JsonConverterAttribute
用于指派转换对象的JsonSerializer。
这个标签可以修饰类或类成员。用于修饰类时,通过此标签指派的JsonConverter会被设置为序列化类的默认方式。用于修饰属性或域成员时,被指派的JsonConverter会序列化它们的值

[XmlIgnore]
忽略xml 序列化

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>