我制作了一个非常简单的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?
答案 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;
}