연관 배열이 아닌 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 객체의 이름과 같은 유용한 정보가 없습니다. 한 번의 요청으로 최대 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