首页 > 解决方案 > c#忽略为空的属性

问题描述

我正在Web Api Application使用 Framewrok 4.5进行 C#

该方法检索一个class像这样定义的

public class BGBAResultadoOperacion
    {

        public string Codigo { get; set; }
        public string Severidad { get; set; }
        [DataMember(Name = "Descripcion", EmitDefaultValue = false)]
        public string Descripcion { get; set; }
    }

我不需要检索那些NULL. 出于这个原因,我定义了描述属性,如

[DataMember(Name = "Descripcion", EmitDefaultValue = false)]

由于我无法从类中删除属性,因此我将类转换为 Json

 var json = new JavaScriptSerializer().Serialize(response);

其中 response 是BGBAResultadoOperacion类的一个实例。

但是生成的Json说"Descripcion":"null"

我无法使用Json.Net,因为我使用的是 Framework.4.5。

如何检索避免为空的属性的数据?

谢谢

标签: c#jsonclassproperties

解决方案


使用 Newtonsoft.Json 进行序列化时使用 NullValueHandling 选项。

从文档中

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public Person Partner { get; set; }
    public decimal? Salary { get; set; }
}

Person person = new Person
{
    Name = "Nigal Newborn",
    Age = 1
};

string jsonIncludeNullValues = JsonConvert.SerializeObject(person, Formatting.Indented);

Console.WriteLine(jsonIncludeNullValues);
// {
//   "Name": "Nigal Newborn",
//   "Age": 1,
//   "Partner": null,
//   "Salary": null
// }

string jsonIgnoreNullValues = JsonConvert.SerializeObject(person, Formatting.Indented, new JsonSerializerSettings
{
    NullValueHandling = NullValueHandling.Ignore
});

Console.WriteLine(jsonIgnoreNullValues);
// {
//   "Name": "Nigal Newborn",
//   "Age": 1
// }

推荐阅读