C# ASP.NET MVC格式化来自动态服务器的JSON响应

C# ASP.NET MVC格式化来自动态服务器的JSON响应,c#,asp.net-mvc,json,dynamic,C#,Asp.net Mvc,Json,Dynamic,我正在使用Dapper返回签名为的IEnumerable对象: date: 01/01/2011 VarName = "VariableX" VariableValue = "Value 1" date: 01/01/2011 VarName = "VariableY" VariableValue = "Value 2" 我希望将此转换为JSON响应: { date: 01/01/2011 VariableX: Value 1 VariableY: Value 2 } …等,并将感谢任

我正在使用Dapper返回签名为的
IEnumerable
对象:

date: 01/01/2011
VarName = "VariableX"
VariableValue = "Value 1"

date: 01/01/2011
VarName = "VariableY"
VariableValue = "Value 2"
我希望将此转换为JSON响应:

{ date: 01/01/2011
 VariableX: Value 1
 VariableY: Value 2
}
…等,并将感谢任何关于从何处开始的观点

谢谢

编辑:

如果我将返回的对象展平,我会看到:

[
{"date":"\/Date(1331683206000)\/","VariableName":"Variable1","VariableValue":"ValueX"},
{"date":"\/Date(1331683206000)\/","VariableName":"Variable2","VariableValue":"ValueY"},
{"date":"\/Date(1331683206000)\/","VariableName":"Variable3","VariableValue":"ValueZ"}
]
我所要寻找的基本指导是如何将其翻转过来,使其内容如下:

[
{"date":"\/Date(1331683206000)\/","Variable1","ValueX"},
{"date":"\/Date(1331683206000)\/","Variable2","ValueY"},
{"date":"\/Date(1331683206000)\/","Variable3","ValueZ"},
]
编辑#2:将所需输出固定为:

[
    {
        "date": "/Date(1331683206000)/",
        "Variable1": "ValueX"
    },
    {
        "date": "/Date(1331683206000)/",
        "Variable2": "ValueY"
    },
    {
        "date": "/Date(1331683206000)/",
        "Variable3": "ValueZ"
    }
]
编辑#3:

我所要寻找的基本指导是如何将其翻转过来,使其内容如下:

[
{"date":"\/Date(1331683206000)\/","Variable1","ValueX"},
{"date":"\/Date(1331683206000)\/","Variable2","ValueY"},
{"date":"\/Date(1331683206000)\/","Variable3","ValueZ"},
]
恐怕这是不可能的,因为您想要的输出是无效的JSON

如果你是这个意思:

[
    ["\/Date(1331683206000)\/","Variable1","ValueX"],
    ["\/Date(1331683206000)\/","Variable2","ValueY"],
    ["\/Date(1331683206000)\/","Variable3","ValueZ"]
]
那么这是一个完全不同的问题


更新:

在显示实际需要的JSON后,您可以投影结果以实现它:

IEnumerable<dynamic> result = ....
var viewModel = result.Select(x =>
{
    var result = new Dictionary<string, object>();
    result["date"] = x.date;
    result[x.VariableName] = x.VariableValue;
    return result;
}).ToList();
return Json(viewModel, JsonRequestBehavior.AllowGet);
IEnumerable结果=。。。。
var viewModel=result.Select(x=>
{
var result=newdictionary();
结果[“日期”]=x.date;
结果[x.VariableName]=x.VariableValue;
返回结果;
}).ToList();
返回Json(viewModel,JsonRequestBehavior.AllowGet);
我所要寻找的基本指导是如何将其翻转过来,使其内容如下:

[
{"date":"\/Date(1331683206000)\/","Variable1","ValueX"},
{"date":"\/Date(1331683206000)\/","Variable2","ValueY"},
{"date":"\/Date(1331683206000)\/","Variable3","ValueZ"},
]
恐怕这是不可能的,因为您想要的输出是无效的JSON

如果你是这个意思:

[
    ["\/Date(1331683206000)\/","Variable1","ValueX"],
    ["\/Date(1331683206000)\/","Variable2","ValueY"],
    ["\/Date(1331683206000)\/","Variable3","ValueZ"]
]
那么这是一个完全不同的问题


更新:

在显示实际需要的JSON后,您可以投影结果以实现它:

IEnumerable<dynamic> result = ....
var viewModel = result.Select(x =>
{
    var result = new Dictionary<string, object>();
    result["date"] = x.date;
    result[x.VariableName] = x.VariableValue;
    return result;
}).ToList();
return Json(viewModel, JsonRequestBehavior.AllowGet);
IEnumerable结果=。。。。
var viewModel=result.Select(x=>
{
var result=newdictionary();
结果[“日期”]=x.date;
结果[x.VariableName]=x.VariableValue;
返回结果;
}).ToList();
返回Json(viewModel,JsonRequestBehavior.AllowGet);

您的问题不够清楚。目前缺少的是您到目前为止尝试过的代码以及遇到的困难。谢谢-我添加了更多的信息。好的,现在更清楚了。您试图实现的是不可能的,因为您显示的是无效的JSON。我的错误,粘贴了错误的格式,请参阅编辑2Alright,现在这是有意义的。我已经更新了我的答案,以说明你如何规划你的收藏以达到预期的效果。你的问题还不够清楚。目前缺少的是您到目前为止尝试过的代码以及遇到的困难。谢谢-我添加了更多的信息。好的,现在更清楚了。您试图实现的是不可能的,因为您显示的是无效的JSON。我的错误,粘贴了错误的格式,请参阅编辑2Alright,现在这是有意义的。我已经更新了我的答案,以说明如何对集合进行投影以获得所需的结果。感谢-向前看,是否可以按日期对变量进行分组,使它们代表我的编辑3?在更新3中,您显示了单个javascript对象,而不是数组。如果输入中有两个不同的日期怎么办?您希望的输出是什么?如果有另一个日期段,它将显示另一个JSON组,因此在不同的日期对所有变量组合进行了本质上的分组-我已经更新了我的编辑谢谢您的帮助Darin,我将尝试通过在初始选择中按日期分组来稍微压缩JSON-再次感谢。感谢-向前看,是否可以按日期分组变量,使它们代表我的编辑3?在更新3中,您显示了一个javascript对象,而不是数组。如果输入中有两个不同的日期怎么办?您希望的输出是什么?如果有另一个日期段,它将显示另一个JSON组,因此在不同的日期对所有变量组合进行基本分组-我已更新了我的编辑谢谢您的帮助Darin,我将尝试通过在初始选择上按日期分组来稍微压缩JSON-再次感谢。