首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接收密钥值对作为输入参数

接收密钥值对作为输入参数
EN

Stack Overflow用户
提问于 2017-11-16 15:21:55
回答 3查看 1.2K关注 0票数 0

我正在尝试接收下面的键值对作为我的Web的输入参数

代码语言:javascript
复制
json=%7B%0A%22MouseSampleBarcode%22%20%3A%20%22MOS81%22%0A%7D%0A

字符串的右边是URL编码的JSON,如下所示

代码语言:javascript
复制
{
"MouseSampleBarcode" : "MOS81"
}

我如何解析它并将它们存储到Model类中

代码语言:javascript
复制
 [HttpPost]
 public async Task<IHttpActionResult> Get([FromBody] CoreBarCodeDTO.RootObject coreBarCode)
 {
  string Bar_Code = coreBarCode.MouseSampleBarcode.ToString();

其中的CoreBarCodeDTO如下所示

代码语言:javascript
复制
public class CoreBarCodeDTO
{
    public class RootObject
    {
        public string MouseSampleBarcode { get; set; }
    }
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-16 15:59:10

你可以这样做。将类更改为此定义。在您的控制器中,coreBarCode.json将拥有json,然后您可以根据需要使用该json:

代码语言:javascript
复制
public class CoreBarCodeDTO
{
    private string _json;
    public string json { get { return _json; }
        set {
            string decoded = HttpUtility.UrlDecode(value);
            _json = decoded;
        }
    }
}

更新

代码语言:javascript
复制
 [HttpPost]
 public async Task<IHttpActionResult> Get([FromBody] CoreBarCodeDTOcoreBarCode coreBarCode)
 {
    string Bar_Code = coreBarCode.json;
    //work with the JSON here, with Newtonsoft for example
    var obj = JObject.Parse(Bar_Code);
    // obj["MouseSampleBarcode"] now = "MOS81"

 }
票数 2
EN

Stack Overflow用户

发布于 2017-11-16 15:34:54

正如@Lokki在他的评论中提到的。GET动词没有正文,您需要将其更改为POST或PUT (取决于您是在创建/搜索还是更新),因此代码如下所示:

代码语言:javascript
复制
[HttpPost("/")]
public async Task<IHttpActionResult> Get([FromBody] CoreBarCodeDTO.RootObject coreBarCode)
{ 
   string Bar_Code = coreBarCode.MouseSampleBarcode.ToString();
票数 0
EN

Stack Overflow用户

发布于 2017-11-16 15:48:59

所以,就像我说的: Get没有身体。

跟着@KinSlayerUY回答。

代码语言:javascript
复制
[HttpPost("/")]
public async Task<IHttpActionResult> Post([FromBody] CoreBarCodeDTO.RootObject coreBarCode)
{ 
   string Bar_Code = coreBarCode.MouseSampleBarcode.ToString();
   ...
}

如果需要使用GET,删除[FromBody]属性并将数据作为单个参数发送

代码语言:javascript
复制
[HttpGet("/")]
public async Task<IHttpActionResult> Get(string mouseSampleBarcode)
{ 
   var rootObject = new CoreBarCodeDTO.RootObject
   {
        MouseSampleBarcode = mouseSampleBarcode
   }
   ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47333305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档