我有一个如下模型:
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?
答案 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),大部分都是自动的,你将获得的结构非常相似。它默认为:
// 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是一个)。