原文链接:https://blog.csdn.net/weixin_44917045/article/details/103236167
https://blog.csdn.net/bazinga_y/article/details/134416680
在写分页的时候,返回Json数据给前台的时候,数据不能出来,原因就是Json数据的列名是大写的,而页面需要的是小写的。
解决办法
public class PageResult<T> {[JsonProperty("total")]public long Total { get; set; }[JsonProperty("rows")]public List<T> Rows { get; set; } }
使用JsonProperty注解中的PropertyName 属性可以自定json字段名称,NullValueHandling 属性,为Include时,当该字段没有赋值时,生成json数据会包含该字段;当为Ignore时,该字段没有赋值时,生成json数据,会忽略该字段。
以下是实体示例:
public class FundCollection{/// <summary>/// 组织编码/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "pk_org", NullValueHandling = NullValueHandling.Include)]public string PkOrg { get; set; }/// <summary>/// 单据编号/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "bill_no", NullValueHandling = NullValueHandling.Ignore)]public string BillNo { get; set; }/// <summary>/// 部门编码/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "pk_dept", NullValueHandling = NullValueHandling.Ignore)]public string PkDept { get; set; }/// <summary>/// 结算方式编码/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "pk_balatype", NullValueHandling = NullValueHandling.Include)]public string PkBalatype { get; set; }/// <summary>/// 单据日期/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "bill_date", NullValueHandling = NullValueHandling.Ignore)]public string BillDate { get; set; }/// <summary>/// 币种编码/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "pk_currtype", NullValueHandling = NullValueHandling.Ignore)]public string PkCurrtype { get; set; }/// <summary>/// 收款银行账户/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "pk_account", NullValueHandling = NullValueHandling.Include)]public string PkAccount { get; set; }/// <summary>/// 备注/// 收款时合并字段(供应商+费用类型)展示摘要中 /// 例如:收XX公司平台使用费/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "memo", NullValueHandling = NullValueHandling.Ignore)]public string Memo { get; set; }/// <summary>/// 自定义项1 银行流水编码/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "def1", NullValueHandling = NullValueHandling.Ignore)]public string Def1 { get; set; }/// <summary>/// 制单人用户编码/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "billmaker", NullValueHandling = NullValueHandling.Include)]public string Billmaker { get; set; }/// <summary>/// 来源系统编码/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "source_flag", NullValueHandling = NullValueHandling.Include)]public string SourceFlag { get; set; }/// <summary>/// 客户编码/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "pk_customer", NullValueHandling = NullValueHandling.Include)]public string PkCustomer { get; set; }/// <summary>/// json数组 传入多个对象/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "body", NullValueHandling = NullValueHandling.Include)]public List<FundCollectionBody> BodyList { get; set; }}public class FundCollectionBody{/// <summary>/// 币种编码/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "pk_currtype", NullValueHandling = NullValueHandling.Ignore)]public string PkCurrtype { get; set; }/// <summary>/// 单据日期/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "bill_date", NullValueHandling = NullValueHandling.Ignore)]public string BillDate { get; set; }/// <summary>/// 收款原币金额/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "rec_primal", NullValueHandling = NullValueHandling.Include)]public string RecPrimal { get; set; }/// <summary>/// 税类别/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "def1", NullValueHandling = NullValueHandling.Ignore)]public string Def1 { get; set; }/// <summary>/// 贸易方式/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "def2", NullValueHandling = NullValueHandling.Ignore)]public string Def2 { get; set; }/// <summary>/// 税率/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "def3", NullValueHandling = NullValueHandling.Ignore)]public string Def3 { get; set; }/// <summary>/// 税金/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "def4", NullValueHandling = NullValueHandling.Ignore)]public string Def4 { get; set; }/// <summary>/// 创建时间/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "creationtime", NullValueHandling = NullValueHandling.Ignore)]public string Creationtime { get; set; }/// <summary>/// 付款银行账号 供应商账户名称/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "pk_oppaccount", NullValueHandling = NullValueHandling.Include)]public string PkOppaccount { get; set; }/// <summary>/// 客户编码/// 是否必填:否 /// </summary>[JsonProperty(PropertyName = "pk_customer", NullValueHandling = NullValueHandling.Ignore)]public string PkCustomer { get; set; }/// <summary>/// 收款银行账号/// 是否必填:是/// </summary>[JsonProperty(PropertyName = "pk_account", NullValueHandling = NullValueHandling.Include)]public string PkAccount { get; set; }/// <summary>/// 收款时合并字段(供应商+费用类型)展示摘要中 /// 例如:收XX公司平台使用费/// 是否必填:否/// </summary>[JsonProperty(PropertyName = "memo", NullValueHandling = NullValueHandling.Ignore)]public string Memo { get; set; }}
以下是调用示例:
FundCollection fund = new FundCollection();fund.BillNo = "PF-202301-00001";fund.Billmaker = "10880D";var list = new List<FundCollectionBody>();FundCollectionBody body = new FundCollectionBody{PkCurrtype = "类型",Memo = "备注标识"};list.Add(body);fund.BodyList = list;var serializerSettings = new JsonSerializerSettings{// 设置为驼峰命名ContractResolver = new CamelCasePropertyNamesContractResolver()};var jsonData= JsonConvert.SerializeObject(fund, (Newtonsoft.Json.Formatting)System.Xml.Formatting.None, serializerSettings);
以下是生成的json数据:
{"pk_org":null,"bill_no":"PF-202301-00001","pk_balatype":null,"pk_account":null,"billmaker":"10880D","source_flag":null,"pk_customer":null,"body":[{"pk_currtype":"类型","rec_primal":null,"pk_oppaccount":null,"pk_account":null,"memo":"备注标识"}]}