列表<list <keyvaluepair <string,string =“”>&gt;&gt;到asp.net MVC 4中的json?</list <keyvaluepair <string,>

时间:2013-09-22 10:48:30

标签: json asp.net-mvc-4

我有一个如下模型:

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?

1 个答案:

答案 0 :(得分:3)

List List组成的KeyValuePair对我来说看起来不对,当然你想要:

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

假设你想要List<List<KeyValuePair<string,string>>>是正确的,假设你正在使用MVC4附带的Json.Net(Newtonsoft JSON),大部分都是自动的,你将获得的结构非常相似。它默认为:

Serializing Collections

的帮助页面
// 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是一个)。