我有课。它有几个属性,比如 10 个。在这 10 个中,3 个填充了数据,其余 7 个是空白的。即空字符串 ""使用了这个 link作为引用。我只想显示 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”是用户实例。运气不好,我的意思是,'t' 返回所有 10 个属性
{"userID":"vick187","ssn":"","empID":"","schemaAgencyName":"","givenName":"","familyName":"","password":"pwd1234",...}
如您所见,仅填充了用户 ID 和密码。但我仍然显示 ssn、empID 等。我只想要用户名和密码。任何帮助将不胜感激。
最佳答案
只是装饰属性 [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
ONLY 应该做你想做的。除非该属性被设置为空字符串。
只是想知道,为什么需要 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; }
}
关于c# - 从 json 序列化对象中删除空字符串属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41287224/