3 回答
TA贡献1852条经验 获得超7个赞
我喜欢在这个属性上坚持使用属性,这是在需要反序列化属性但不序列化属性时使用的方法,反之亦然。
第1步-创建自定义属性
public class JsonIgnoreSerializationAttribute : Attribute { }
第2步-创建自定义合同转帐
class JsonPropertiesResolver : DefaultContractResolver
{
protected override List<MemberInfo> GetSerializableMembers(Type objectType)
{
//Return properties that do NOT have the JsonIgnoreSerializationAttribute
return objectType.GetProperties()
.Where(pi => !Attribute.IsDefined(pi, typeof(JsonIgnoreSerializationAttribute)))
.ToList<MemberInfo>();
}
}
步骤3-在不需要序列化但反序列化的地方添加属性
[JsonIgnoreSerialization]
public string Prop1 { get; set; } //Will be skipped when serialized
[JsonIgnoreSerialization]
public string Prop2 { get; set; } //Also will be skipped when serialized
public string Prop3 { get; set; } //Will not be skipped when serialized
第4步-使用它
var sweet = JsonConvert.SerializeObject(myObj, new JsonSerializerSettings { ContractResolver = new JsonPropertiesResolver() });
希望这可以帮助!同样值得注意的是,当反序列化发生时,这也会忽略属性,当我进行反序列化时,我只是以常规方式使用转换器。
JsonConvert.DeserializeObject<MyType>(myString);
- 3 回答
- 0 关注
- 519 浏览
添加回答
举报