为什么我的Web API不返回JSON?

时间:2018-06-07 05:19:57

标签: c# json asp.net-core-webapi

我制作了一个非常简单的Web API控制器,可以在更复杂的错误中重现错误,此控制器只有最少量的代码来重现错误。

控制器代码如下

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;

namespace NWCloudBorgEmployee.Controllers
{

    public class WmsInfo
    {
        public string StoreName { get; set; }
        public string ItemName { get; set; }
        public string ItemQty { get; set; }
    }

    public class WmsInformation
    {
        public List<WmsInfo> WmsInfos { get; set; }
    }

    [Produces("application/json")]
    [Route("api/WmsInfo")]
    public class WmsInfoController : Controller
    {
        // GET: api/WmsInfo
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "You need to send in a barcode as ID to get the correct return data" };
        }

        // GET: api/WmsInfo/5
        [HttpGet("{id}", Name = "Get")]
        public string Get(int id)
        {
            var test = new WmsInformation();
            test.WmsInfos = new List<WmsInfo>
            {
                new WmsInfo { StoreName = "SE001", ItemName = "Item1" , ItemQty = "10"},
                new WmsInfo { StoreName = "SE002", ItemName = "Item2" , ItemQty = "115"}
            };

            return test.ToString();
        }
    }
}

当我调用API时,我得到一个字符串,而不是JSON数据

"NWCloudBorgEmployee.Controllers.WmsInformation"

为什么不返回JSON?

3 个答案:

答案 0 :(得分:3)

因为你在对象上调用.ToString()

将您的方法签名更改为:

public IActionResult Get(int id)

然后简单地说:

return Ok(test);

注意:您可以更改签名以返回WmsInformation,但使用操作结果也可以轻松返回错误代码。

答案 1 :(得分:1)

我建议使用JsonResult而不是字符串

Node

我希望你觉得它很有用

答案 2 :(得分:0)

这是有效的JSON。这是一个字符串,就像你的返回类型一样。

我想你正在尝试序列化对象,而不是使用ToString,它会默认返回类型名称。

您只需返回对象而不是使用ToString,并调整方法签名以考虑更改。

这将启动内容协商过程并最终将对象序列化为(可能)JSON。

public WmsInformation Get(int is)
{
    var test = new WmsInformation
    {
        WmsInfos = ...
    }

    return test;
}