在我的项目中,我正在开发一个Web服务(使用EF6的WebAPI 2)。该服务应返回JSON消息,这是。但是消息是不便的格式。
控制器是:
public class Arguments
{
public int arg1{ get; set; }
public int arg2{ get; set; }
}
[Route("webroute")]
[HttpPost]
[AcceptVerbs("POST")]
public IHttpActionResult FindTodos(Arguments args)
{
return Ok(_repo.BuscaOrdens(args.arg1, args.arg2));
}
回购方法为:
public object FindTodos(int arg1, int arg2)
{
dynamic nextDeadlines = _ctx.Todos
.Where(o => o.field1 == arg1 && o.field2 == arg2)
.OrderByDescending(o => o.field3)
.ThenBy(o => o.ts)
.Take(10)
.Select(x => new
{
x.Field4,
x.Field5
}).ToList();
dynamic delayed = _ctx.Todos
.Where(o => o.field1 == arg1 && o.field2 == arg2)
.OrderBy(o => o.field3)
.ThenByDescending(o => o.ts)
.Take(10)
.Select(x => new
{
x.Field4,
x.Field5
}).ToList();
return new List<object> { new List<object> {"NextDeadlines", nextDeadlines}, new List<object> { "Delayed", delayed} };
}
json返回它给我的是:
[
[
"NextDeadlines",
[
{
"Field4": 2000,
"Field5": 1.05
},
{
"Field4": 1000,
"Field5": 1
}
]
],
[
"Delayed",
[
{
"Field4": 500,
"Field5": 1.1111111111111112
}
]
]
]
最后我期望得到的就是这样:
[
"NextDeadlines":
[
{
"Field4": 2000,
"Field5": 1.05
},
{
"Field4": 1000,
"Field5": 1
}
],
"Delayed":
[
{
"Field4": 500,
"Field5": 1.1111111111111112
}
]
]
关于要纠正什么的想法?
预先感谢!Erich
开始,您期望的JSON无效。我怀疑你的意思是
[
{
"NextDeadlines":
[
{
"Field4": 2000,
"Field5": 1.05
},
{
"Field4": 1000,
"Field5": 1
}
],
"Delayed":
[
{
"Field4": 500,
"Field5": 1.1111111111111112
}
]
}
]
如果是这样,则需要将最终行修改为
return new List<object> { new List<object> {"NextDeadlines", nextDeadlines}, new List<object> { "Delayed", delayed} };
to
return new List<object> { new {NextDeadlines = nextDeadlines}, new { Delayed = delayed} };