0

我有一个如下模型:

public class GridViewModel
{
    public List<List<KeyValuePair<string, string>>> Rows { get; set; }
    public int FoundItems { get; set; }
    public int CurrentPage { get; set; }
    public int TotalPages { get; set; }
    public int ItemsPerPage { get; set; }
    public string PagingLinks { get; set; }//Contains Html Tags
}

Rows将动态填写控制器,如下所示:

Rows = [ [Id=1, Name='Name', FullName='FullName'], [Id=2, Name='Name', FullName='FullName'], ... ];

我想将模型转换为 JSON 以通过 JsonResult 发送。
所以,我希望在我的 JSON 中有如下内容:

{ 
   Rows : [ 
            { Id=1, Name='Name', FullName='FullName'}, 
            { Id=2, Name='Name', FullName='FullName'}
          ],
   FoundItems : 123,
   CurrentPage : 1,
   TotalPages : 3,
   ItemsPerPage : 50,
   PagingLinks : '<b>1</b><span>2</span><span>3</span>'
}

您能否指导我,如何将模型转换为 JSON ?

4

1 回答 1

3

一个由我组成的List内部看起来不对,你肯定想要:ListKeyValuePair

 List<Dict<string,string>>   // Will be serialized correctly by Json.Net

假设您的想法是正确的List<List<KeyValuePair<string,string>>>,假设您使用的是 MVC4 中包含的 Json.Net (Newtonsoft JSON),那么大部分操作都是自动的,您将获得的结构非常相似。它会默认为:

序列化集合的帮助页面

// Assumption: you already know how to use JObject.Convert or one of the other
// serialization/deserialization classes.

{
    Rows : [ 
              {
                  [
                     {"Row1Key1":"Row1Value1"},
                     {"Row1Key2":"Row1Value2"}
                  ]
              },
              {
                  [
                     {"Row2Key1":"Row2Value1"}
                  ]
              }
           ],
    // etc (as in example provided)

您提到的“Id”没有与该值对应的数据,将由 JSON 中的位置确定。

如果您真的想要 ID 部分,您将不得不提供一个 JsonConverter 并使用您自己的逻辑将集合投影出来(例如,与索引相比,Id 相差一个)。

于 2013-09-22T11:05:45.943 回答