当前位置: 移动技术网 > IT编程>开发语言>.net > 使用JsonProperty Attribute修改返回json

使用JsonProperty Attribute修改返回json

2019年04月24日  | 移动技术网IT编程  | 我要评论

nuk和贝亲哪个好,军旗外挂,苏叶薇

使用jsonproperty attribute修改返回 json 值的name

本例使用jsonpropertyattribute在序列化为json时更改属性的名称。

public class videogame
{
    [jsonproperty("name")]
    public string name { get; set; }

    [jsonproperty("release_date")]
    public datetime releasedate { get; set; }
}
videogame starcraft = new videogame
{
    name = "starcraft",
    releasedate = new datetime(1998, 1, 1)
};

string json = jsonconvert.serializeobject(starcraft, formatting.indented);

console.writeline(json);
// {
//   "name": "starcraft",
//   "release_date": "1998-01-01t00:00:00"
// }

排序

public class account
{
    public string emailaddress { get; set; }

    // appear last
    [jsonproperty(order = 1)]
    public bool deleted { get; set; }

    [jsonproperty(order = 2)]
    public datetime deleteddate { get; set; }

    public datetime createddate { get; set; }
    public datetime updateddate { get; set; }

    // appear first
    [jsonproperty(order = -2)]
    public string fullname { get; set; }
}
account account = new account
{
    fullname = "aaron account",
    emailaddress = "aaron@example.com",
    deleted = true,
    deleteddate = new datetime(2013, 1, 25),
    updateddate = new datetime(2013, 1, 25),
    createddate = new datetime(2010, 10, 1)
};

string json = jsonconvert.serializeobject(account, formatting.indented);

console.writeline(json);
// {
//   "fullname": "aaron account",
//   "emailaddress": "aaron@example.com",
//   "createddate": "2010-10-01t00:00:00",
//   "updateddate": "2013-01-25t00:00:00",
//   "deleted": true,
//   "deleteddate": "2013-01-25t00:00:00"
// }

在反序列化期间使用的required,以验证是否存在所需的json属性

public class videogame
{
    [jsonproperty(required = required.always)]
    public string name { get; set; }

    [jsonproperty(required = required.allownull)]
    public datetime? releasedate { get; set; }
}
string json = @"{
  'name': 'starcraft iii',
  'releasedate': null
}";

videogame starcraft = jsonconvert.deserializeobject<videogame>(json);

console.writeline(starcraft.name);
// starcraft iii

console.writeline(starcraft.releasedate);
// null

jsonignoreattribute

使用jsonignoreattribute从序列化中排除属性

public class account
{
    public string fullname { get; set; }
    public string emailaddress { get; set; }

    [jsonignore]
    public string passwordhash { get; set; }
}

详情请参考 https://www.newtonsoft.com/json/help/html/jsonpropertyname.htm

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网