我正在尝试接收以下键值对作为我的Web API的输入参数
json=%7B%0A%22MouseSampleBarcode%22%20%3A%20%22MOS81%22%0A%7D%0A
其中字符串的右边是URL编码的JSON,看起来像
{
"MouseSampleBarcode" : "MOS81"
}
如何解析它并将它们存储到Model类
中 [HttpPost]
public async Task<IHttpActionResult> Get([FromBody] CoreBarCodeDTO.RootObject coreBarCode)
{
string Bar_Code = coreBarCode.MouseSampleBarcode.ToString();
其中CoreBarCodeDTO如下所示
public class CoreBarCodeDTO
{
public class RootObject
{
public string MouseSampleBarcode { get; set; }
}
}
答案 0 :(得分:1)
你可以这样做。将您的班级更改为此定义。在您的控制器linqQuery.ToString()
中将包含您可以根据需要使用的json:
coreBarCode.json
更新
public class CoreBarCodeDTO
{
private string _json;
public string json { get { return _json; }
set {
string decoded = HttpUtility.UrlDecode(value);
_json = decoded;
}
}
}
答案 1 :(得分:0)
正如@Lokki在评论中提到的那样。 GET动词没有正文,您需要将其更改为POST或PUT(取决于您是否正在创建/搜索或更新),因此您的代码将如下所示:
[HttpPost("/")]
public async Task<IHttpActionResult> Get([FromBody] CoreBarCodeDTO.RootObject coreBarCode)
{
string Bar_Code = coreBarCode.MouseSampleBarcode.ToString();
答案 2 :(得分:0)
所以,正如我所说:Get没有身体。
关注@KinSlayerUY回答。
[HttpPost("/")]
public async Task<IHttpActionResult> Post([FromBody] CoreBarCodeDTO.RootObject coreBarCode)
{
string Bar_Code = coreBarCode.MouseSampleBarcode.ToString();
...
}
如果您需要使用GET删除[FromBody]
属性并将数据作为单个参数发送
[HttpGet("/")]
public async Task<IHttpActionResult> Get(string mouseSampleBarcode)
{
var rootObject = new CoreBarCodeDTO.RootObject
{
MouseSampleBarcode = mouseSampleBarcode
}
...
}