如何使用Json(C#)序列化一个忽略某些属性的对象

时间:2018-05-11 13:22:50

标签: c# json

这应该很容易,但经过一天的实验后我更加困惑。 这在测试场景中非常有用 基本上我想轻松地将测试中创建的对象与我期望的内容进行比较,但忽略无关紧要的属性。 对象是WPF应用程序,我正在重构关键的初始化代码,所以场景将是:

  • 我想以旧方式初始化对象的Json副本(没有任何不重要的属性)作为json字符串并保存到“gold”文件
  • 运行测试 - 以新的方式初始化对象
  • 将新对象序列化为json字符串 - 并且在没有不重要属性的情况下将其序列化
  • 加载黄金档案 - >串

  • 比较两个字符串

基本上是顶级重要属性的字典(nae - 作为字符串的值)是我想要的。我对层次复杂性不感兴趣,因为如果需要,我可以在代码中做到这一点。 保持简单...... 有很多Json nugets,过滤在JSon封装中“隐藏”。 这对于单元测试来说是一个非常有用的想法,但我很难得到(简单)方法来做到这一点。我不想在主类中使用属​​性 - 因为这只是针对特定的测试。

我看了很多帖子并尝试了各种各样的想法,但它不能到达那里。 如果你能感谢,请帮助

特里

1 个答案:

答案 0 :(得分:0)

你可以使用newtonsoft Json.net来做到这一点: https://www.newtonsoft.com/json/help/html/SerializationAttributes.htm

您只需要设置JsonPropertyAttribute

即可
[JsonObject(MemberSerialization.OptIn)]
public class Person
{
    // "John Smith"
    [JsonProperty]
    public string Name { get; set; }

    // "2000-12-15T22:11:03"
    [JsonProperty]
    public DateTime BirthDate { get; set; }

    // new Date(976918263055)
    [JsonProperty]
    public DateTime LastModified { get; set; }

    // not serialized because mode is opt-in
    public string Department { get; set; }
}