我有一个以这种方式存储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片段,它将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;
}
答案 0 :(得分:2)
尝试使用JsonPropertyAttribute来填充您的字段,如下所示:
public abstract class Animal
{
[JsonProperty(Order = 0)]
public string Id { get; set; }
[JsonProperty(Order = 1)]
public int LegsNumber { get; set; }
}
public class Giraffe: Animal
{
[JsonProperty(Order = 2)]
public double NeckLength { get; set; }
}
答案 1 :(得分:0)
Json没有提供基于索引的访问权限。 相反,你可以尝试这样的事情
for (int i = 0; i < Data.length(); i++) {
var item=Data.[i];
var row = '<tr>';
row += '<td><b>' +item['Id'] + '</b></td>'+'<td><b>' +item['LegsNumber'] + '</b></td>'
+item['NeckLength'] + '</b></td>'+'<tr>';
}