首页 / JSON / c# – 无法使用空值序列化json
c# – 无法使用空值序列化json
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 无法使用空值序列化json,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5156字,纯文字阅读大概需要8分钟。
内容图文
![c# – 无法使用空值序列化json](/upload/InfoBanner/zyjiaocheng/780/6a258afa65ed421dbae2f09554c3c1db.jpg)
[JsonObject(MemberSerialization.OptIn)]
public class NameIDItem
{
[JsonProperty]
public string _name{ get; set; }
[JsonProperty]
public int _id { get; set; }
public NameIDItem(){}
public NameIDItem(string name, int id)
{
_name = name;
_id = id;
}
}
[JsonObject(MemberSerialization.OptIn)]
public class LinkListOfUserGroup
{
public List<NameIDItem> NewItems { get; set; }
public List<NameIDItem> RemovedItems { get; set; }
public bool TrackChanges { get; set; }
public List<NameIDItem> Items { get; set; }
}
[JsonObject(MemberSerialization.OptIn)]
public class UserRequestJson
{
[JsonProperty(Required = Required.Always)]
public string Email { get; set; }
[JsonProperty]
public string Email2 { get; set; }
[JsonProperty]
public string Email3 { get; set; }
[JsonProperty(Required = Required.Always)]
public string UserName { get; set; }
[JsonProperty(Required = Required.Always)]
public string Password { get; set; }
[JsonProperty(Required = Required.Always)]
public string PasswordQuestion { get; set; }
[JsonProperty(Required = Required.Always)]
public string PasswordAnswer { get; set; }
[JsonProperty]
public bool IsAdmin { get; set; }
[JsonProperty]
public bool MustResetPassword { get; set; }
[JsonProperty]
public byte Source {get {return source;} set { source = value; }}
private byte source = 0;
[JsonProperty]
public string CellPhoneNo { get; set; }
[JsonProperty]
public string CellPhoneNo2 { get; set; }
[JsonProperty]
public string CellPhoneNo3 { get; set; }
[JsonProperty]
public string PagerNo { get; set; }
[JsonProperty]
public string PagerNo2 { get; set; }
[JsonProperty]
public bool NotifyBySMS { get; set; }
[JsonProperty]
public bool NotifyByEmail { get; set; }
[JsonProperty]
public bool NotifyByPopup { get; set; }
[JsonProperty]
public bool NotifyByPush { get; set; }
[JsonProperty]
public bool AllowPersonalDashboard { get; set; }
[JsonProperty]
public bool AllowUnlimitedDashboardItems { get; set; }
[JsonProperty]
public bool CanHaveUnlimitedAlerts { get; set; }
[JsonProperty]
public bool StayLoggedIn { get; set; }
[JsonProperty]
public bool IsActive { get; set; }
[JsonProperty]
public int AccountTypeID {get {return accountTypeID;} set { accountTypeID = value; }}
private int accountTypeID = 1;
[JsonConverter(typeof(GERLinkListOfUserGroup))]
public GERLinkListOfUserGroup Groups { get; set; }
[JsonProperty]
public int CreatedBy { get; set; }
[JsonProperty]
public string CreatedOn {get {return createdOn;} set { createdOn = value; }}
private string createdOn = "0001-01-01T00:00:00";
[JsonProperty]
public int ModifiedBy { get; set; }
[JsonProperty]
public string ModifiedOn {get {return modifiedOn;} set { modifiedOn = value; }}
private string modifiedOn = "0001-01-01T00:00:00";
[JsonProperty]
public int ID { get; set; }
[JsonProperty(Required = Required.Always)]
public string Name { get; set; }
[JsonProperty(Required = Required.Always)]
public string ConfirmPassword { get; set; }
[JsonProperty]
public int CellProviderID { get; set; }
[JsonProperty]
public int CellProviderID2 { get; set; }
[JsonProperty]
public int CellProviderID3 { get; set; }
[JsonProperty]
public int PagerProviderID { get; set; }
[JsonProperty]
public int PagerProviderID2 { get; set; }
}
我尝试序列化json,但得到错误.
An exception of type
‘Newtonsoft.Json.JsonException’ occurred in Newtonsoft.Json.dll but was not handled in user codeAdditional information: Error creating ‘LinkListOfUserGroup’.
我该怎么做才能获得[]空列表,“”对于空字符串和整数?
UserRequestJson user = new UserRequestJson()
{
Email = _Name + "@email.com",
UserName = _Name,
Password = _Name + "!",
PasswordQuestion= _Name,
PasswordAnswer= _Name,
Groups = new GERLinkListOfUserGroup()
{
NewItems = new List<NameIDItem>() { new NameIDItem("HCS Users", groupID) },
RemovedItems = new List<NameIDItem>(),
TrackChanges = false,
Items = new List<NameIDItem>() { new NameIDItem("HCS Users", groupID) }
},
Name=_Name,
ConfirmPassword= _Name + "!"
};
string json= JsonConvert.SerializeObject(user);
Console.WriteLine(json);
{"Email":"asdasd2@mail.com","Email2":"","Email3":"","UserName":"!asfsfsd","Password":"!asdasd!asdasd","PasswordQuestion":"!asdasd","PasswordAnswer":"!asdasd","IsAdmin":false,"Source":0,"MustResetPassword":false,"CellPhoneNo":"","CellPhoneNo2":"","CellPhoneNo3":"","PagerNo":"","PagerNo2":"","NotifyBySMS":false,"NotifyByEmail":false,"NotifyByPopup":false,"NotifyByPush":false,"AllowPersonalDashboard":false,"AllowUnlimitedDashboardItems":false,"CanHaveUnlimitedAlerts":false,"StayLoggedIn":true,"IsActive":false,"AccountTypeID":1,"Groups":{"NewItems":[],"RemovedItems":[],"TrackChanges":false,"Items":[]},"CreatedBy":0,"CreatedOn":"0001-01-01T00:00:00","ModifiedBy":0,"ModifiedOn":"0001-01-01T00:00:00","ID":0,"Name":"!asdasd","ConfirmPassword":"!asdasd!asdasd","CellProviderID":"","CellProviderID2":"","CellProviderID3":"","PagerProviderID":"","PagerProviderID2":""}
解决方法:
您没有LinkListOfUserGroup中任何属性的[JsonProperty]属性,这就是它失败的原因.
[JsonObject(MemberSerialization.OptIn)]
public class LinkListOfUserGroup
{
[JsonProperty]
public List<NameIDItem> NewItems { get; set; }
[JsonProperty]
public List<NameIDItem> RemovedItems { get; set; }
[JsonProperty]
public bool TrackChanges { get; set; }
[JsonProperty]
public List<NameIDItem> Items { get; set; }
}
应该做的伎俩.
内容总结
以上是互联网集市为您收集整理的c# – 无法使用空值序列化json全部内容,希望文章能够帮你解决c# – 无法使用空值序列化json所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。