3

我正在编写返回 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 对象的名称。通过一个请求,它最多可以返回 20000(1.2MB) 条记录(演示图片:http: //i.imgur.com/67dsPuh.jpg)。

如果我将 JSON 更改为非关联数组,我想我可以节省大约 40% 的数据传输。但我不知道该怎么做,因为我是 C# 和严格类型语言的新手。

我想要的回应:[[134649, 6, 56.884040, 14.761320],[134649, 6, 56.884040, 14.761320]]

4

1 回答 1

5

在混合数据类型时,将每个项目作为对象数组返回:

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;
于 2013-09-12T08:48:09.787 回答