結合配列でないJSONを返す方法

c# c#-4.0 dapper json.net servicestack

質問

私はJSONオブジェクトの配列を返すシンプルなAPIを書いています:

[
    {
        "Id": 134649,
        "Type_id": 6,
        "Latitude": 56.904220,
        "Longitude":14.823440
    },
    {
        "Id": 134660,
        "Type_id": 6,
        "Latitude": 56.884040,
        "Longitude":14.761320
    }
]

これは私が書いたResponse.MapEntriesモデルによって生成されます:

class MapEntries
{
    public ulong Id { get; set; }
    public int Type_id { get; set; }
    public decimal Latitude { get; set; }
    public decimal Longitude { get; set; }
}

そして、このように満たされ、返された:

List<Response.MapEntries> entries = new List<Response.MapEntries>();
using (IDbConnection db = Connection.Instance())
{
    db.Open();
    entries = db.Query<Response.MapEntries>(query.ToString(), parameters).ToList();
}

return entries;

問題

JSONレスポンスにはJSONオブジェクトの名前のような無駄な情報があります。 1回のリクエストで最大20000(1.2MB)のレコード(デモイメージ: http ://i.imgur.com/67dsPuh.jpg)を返すことができます。

JSONを連想配列に変更すると、データ転送の約40%を節約できます。しかし、私はC#と厳密な型付き言語では新しいので、その方法を知らない。

私は欲しいです: [[134649, 6, 56.884040, 14.761320],[134649, 6, 56.884040, 14.761320]]

受け入れられた回答

データ型を混合するときは、各項目をオブジェクトの配列として返します。

List<object[]> entries;
using (IDbConnection db = Connection.Instance()) {
  db.Open();
  entries = db.Query<Response.MapEntries>(query.ToString(), parameters)
    .Select(e => new object[] { e.Id, e.Type_id, e.Latitude, e.Longitude })
    .ToList();
}

return entries;


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow