从json序列化对象中删除空字符串属性

我有课

它具有几个属性,可以说10。在这10个中,有3个填充了剩余的数据,其中7个是blank.ie空字符串“”使用此链接作为参考。我只想显示NON-NULL和NON-

EMPTY字符串属性。但是最终输出具有所有10个属性。我只想看3。

namespace Mynamespace.ValueObjects

{

[DataContract]

public class User

{

[DataMember(Name ="userID", IsRequired = false,EmitDefaultValue = false)]

public string userID { get; set; }

[DataMember(Name ="ssn", IsRequired = false,EmitDefaultValue = false)]

public string ssn { get; set; }

[DataMember(Name ="empID", IsRequired = false,EmitDefaultValue = false)]

public string empID { get; set; }

[DataMember(Name ="schemaAgencyName", IsRequired = false,EmitDefaultValue = false)]

public string schemaAgencyName { get; set; }

[DataMember(Name ="givenName", IsRequired = false,EmitDefaultValue = false)]

public string givenName { get; set; }

[DataMember(Name ="familyName", IsRequired = false,EmitDefaultValue = false)]

public string familyName { get; set; }

[DataMember(Name ="password", IsRequired = false,EmitDefaultValue = false)]

public string password { get; set; }

....

}

}

我也尝试过

 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]

作为属性。没运气。我也这样

 var t = JsonConvert.SerializeObject(usr, Newtonsoft.Json.Formatting.None,

new JsonSerializerSettings

{NullValueHandling = NullValueHandling.Ignore});

其中“ usr”是用户实例。运气不好,我的意思是,所有10个属性都返回“ t”

{"userID":"vick187","ssn":"","empID":"","schemaAgencyName":"","givenName":"","familyName":"","password":"pwd1234",...}

如您所见,仅填充了用户ID和密码。但是我仍然显示ssn,empID等。我只想要用户名和密码。任何帮助,将不胜感激。

回答:

仅装饰属性[JsonProperty(NullValueHandling =

NullValueHandling.Ignore)]应做您想要的。除非将属性设置为空字符串。

只是想知道,为什么需要DataMemeber属性?

这是工作中的dotnetfiddle的链接

using System;

using Newtonsoft.Json;

using System.ComponentModel;

public class Program

{

public static void Main()

{

var user = new User();

user.UserID = "1234";

user.ssn = "";

var settings = new JsonSerializerSettings();

settings.NullValueHandling = NullValueHandling.Ignore;

settings.DefaultValueHandling = DefaultValueHandling.Ignore;

Console.WriteLine(JsonConvert.SerializeObject(user, settings));

}

}

public class User

{

[DefaultValue("")]

public string UserID { get; set; }

[DefaultValue("")]

public string ssn { get; set; }

[DefaultValue("")]

public string empID { get; set; }

[DefaultValue("")]

public string schemaAgencyName { get; set; }

[DefaultValue("")]

public string givenName { get; set; }

[DefaultValue("")]

public string familyName { get; set; }

[DefaultValue("")]

public string password { get; set; }

}

以上是 从json序列化对象中删除空字符串属性 的全部内容, 来源链接: utcz.com/qa/414913.html

回到顶部