我正在编写返回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) 条记录(演示图像:https://i.stack.imgur.com/Corw5.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;