在WebAPI项目中安装JSON答案



在我的项目中,我正在开发一个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} };

最新更新