json.net 序列化组件 Newtonsoft.Json 如果有不需要序列化的字段,可以给该字段添加[JsonIgnore]标记...

 

[JsonIgnore]
    public string Master { get; set; }

转载于:https://www.cnblogs.com/joeylee/archive/2013/05/11/3072899.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您不想使用 JsonIgnore 属性来排除指定字段序列化,或者使用 JsonProperty 属性来只序列化指定字段,那么您可以使用 ContractResolver 来达到相同的效果。 在 Newtonsoft.Json 中,ContractResolver 是负责解析对象类型并创建序列化和反序列化的合同的组件。通过自定义 ContractResolver,您可以控制序列化过程中哪些属性应该被序列化,哪些应该被忽略。 例如,以下是一个自定义 ContractResolver,它只序列化指定的属性: ```csharp public class PersonContractResolver : DefaultContractResolver { private readonly List<string> _propertiesToSerialize; public PersonContractResolver(List<string> propertiesToSerialize) { _propertiesToSerialize = propertiesToSerialize; } protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization) { var property = base.CreateProperty(member, memberSerialization); if (!_propertiesToSerialize.Contains(property.PropertyName)) { property.ShouldSerialize = instance => false; } return property; } } ``` 在上面的代码中,我们继承了 Newtonsoft.Json 中的默认 ContractResolver,并覆盖了 CreateProperty 方法,在该方法中,我们为每个属性创建一个 JsonProperty,并根据 _propertiesToSerialize 列表中的属性名来决定是否序列化该属性。 例如,以下是如何使用 PersonContractResolver 来只序列化 Name 属性的示例: ```csharp var person = new Person { Name = "John Doe", Age = 30 }; var propertiesToSerialize = new List<string> { "Name" }; var settings = new JsonSerializerSettings { ContractResolver = new PersonContractResolver(propertiesToSerialize), Formatting = Formatting.Indented }; var json = JsonConvert.SerializeObject(person, settings); Console.WriteLine(json); ``` 在上面的代码中,我们创建了一个 Person 对象,并将其序列化JSON 字符串,但是我们只选择序列化 Name 属性。序列化过程中,我们使用了自定义的 PersonContractResolver,并将其设置为 JsonSerializerSettings 中的 ContractResolver 属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值