PagedList 的 Newtonsoft.Json 序列化不包含某些属性

2024-05-27

我正在尝试序列化 PagedList 对象(https://github.com/martijnboland/MvcPaging/blob/master/src/MvcPaging/PagedList.cs 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 的一部分。

有谁知道为什么?我如何将这些属性包含在序列化中?

Thanks


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

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

这应该会产生一个如下所示的 JSON 对象:

{
    "Items": [
        { ... },
        { ... },
        { ... }
    ],
    "MetaData": {
        "PageSize": 1,
        "PageCount": 2,
        "HasNextPage": true,
        ...
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PagedList 的 Newtonsoft.Json 序列化不包含某些属性 的相关文章

随机推荐