2

この方法で 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 コントローラーでは、すべてのキリンにクエリを実行し、結果を次のように 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}, {...}, ...]

?

興味があり、順序を変更したい理由を知りたい場合は、json を取得してそのまま出力する汎用の JavaScript スニペットがあるためです。

 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;
 }
4

2 に答える 2

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; }
}
于 2012-09-28T03:54:02.237 に答える
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>';
}
于 2012-09-27T11:35:18.317 に答える