【发布时间】:2012-09-27 08:21:35
【问题描述】:
我有一个用 RavenDB 以这种方式存储的模型:
public abstract class Animal
{
public string Id { get; set; }
public int LegsNumber { get; set; }
}
public class Giraffe: Animal
{
public double NeckLength { get; set; }
}
在我的 MVC 控制器中,我查询所有 Giraffe 并以这种方式将结果放入 Json 格式:
return new JsonResult
{
JsonRequestBehavior = System.Web.Mvc.JsonRequestBehavior.AllowGet,
Data = DocumentSession.Query<Giraffe>()
};
输出类似于
[{"NeckLength":2.5, "Id":"bob", "LegsNumber":4}, {...}, ...]
如何自定义字段顺序以获得这样的结果:
[{"Id":"bob", "LegsNumber":4, "NeckLength":2.5}, {...}, ...]
?
如果您好奇并且想知道我为什么要更改顺序是因为我有一个通用的 javascript sn-p 可以获取 json 并按原样打印出来:
for (var field in data[0]) {
var row = '<tr>';
row += '<td><b>' + field + '</b></td>'
$.each(data, function (i, value) {
row += '<td>' + value[field] + '</td>'
});
row += '</tr>';
result += row;
}
【问题讨论】:
-
你为什么要这样......顺序在 JSON 中并不重要
-
因为: - 我需要按特定顺序打印数据 - 我不想添加订单字段 - html/js 对数据一无所知。只需打印每个字段名称和对应的值
-
一种变通方法是在字段名称中硬编码订单号(例如 Id_1、LegsNumber_2、NeckLength_3)并使用它对结果进行排序,但不是很优雅
标签: asp.net-mvc json ravendb