gpt4 book ai didi

json - PagedList 的 Newtonsoft.Json 序列化不包括某些属性

转载 作者:行者123 更新时间:2023-12-01 14:35:34 25 4
gpt4 key购买 nike

我正在尝试将 PagedList 对象 ( https://github.com/martijnboland/MvcPaging/blob/master/src/MvcPaging/PagedList.cs ) 序列化为 Json,如下所示:

PagedList<Product> pagedList = new PagedList<Product>(products, (page - 1), pageSize);
string json = Newtonsoft.Json.JsonConvert.SerializeObject(pagedList);

如果我使用上面的代码,我会得到一个正确序列化的 Product 对象数组。但是(PagedList)下面的属性不包含在 Json 结果中:

    public bool HasNextPage { get; }
public bool HasPreviousPage { get; }
public bool IsFirstPage { get; }
public bool IsLastPage { get; }
public int ItemEnd { get; }
public int ItemStart { get; }
public int PageCount { get; }
public int PageIndex { get; }
public int PageNumber { get; }
public int PageSize { get; }
public int TotalItemCount { get; }

它们没有被序列化,但它们是 PagedList 的一部分。

有人知道为什么吗?我怎样才能在序列化中包含这些属性?

谢谢

最佳答案

序列化程序看到 PagedList 是可枚举的,因此将其序列化为 JavaScript 数组。为了使这更容易处理,我在 PagedList 对象上公开了一个 GetMetaData() 函数,该函数将返回一个 MetaData 对象,其中包含您上面提到的字段。这意味着您可以像这样序列化您的分页列表:

string json = Newtonsoft.Json.JsonConvert.SerializeObject(new{
items = pagedList,
metaData = pagedList.GetMetaData()
});

这应该会产生一个像这样的 JSON 对象:

{
"Items": [
{ ... },
{ ... },
{ ... }
],
"MetaData": {
"PageSize": 1,
"PageCount": 2,
"HasNextPage": true,
...
}
}

关于json - PagedList<T> 的 Newtonsoft.Json 序列化不包括某些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com