WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#复杂类型转为QueryString

Posted on 2023-08-18 10:40  WebEnh  阅读(73)  评论(0编辑  收藏  举报

使用 visual studio 创建 webapi 项目,并添加 DefaultController.cs,代码如下

 public class DefaultController : ApiController
    {

        [HttpGet]
        [Route("HH")]
        public DefaultResponse HH([FromUri]DefaultRequest request)
        {
            return new DefaultResponse
            {
                ss = "iioppperer",
                ts = DateTime.Now
            };
        }
    }
    public class DefaultResponse
    {
        public string ss { get; set; }
        public DateTime ts { get; set; }
    }
    public class DefaultRequest
    {
        public DefaultRequestChild child { get; set; }
    }
    public class DefaultRequestChild
    {
        public int childid { get; set; }
        public string chidname { get; set; }

        public ChildType childs { get; set; }
    }
    public enum ChildType
    {
        HH,
        TT
    }

使用 nuget 添加 swagger, 并编译运行,在当前根 url 访问 /swagger,页面如下 输入图片说明

如红线部分参数,如果我们每次手动拼结,少了还好,如果 10 个以上,很容易拼错,也容易拼的心累,那么有没有好的办法呢,自己写?死脑细胞!直接用 nuget 里搜索 query string,发现如下 输入图片说明 github 地址:https://github.com/travelhubapi/csharp-qs 言归正传,使用 csharp-qs 生成 / HH 需要的参数

  var request = new 
            {
                child = new  { childid = 1, chidname = "SS", childs = (int)ChildType.TT }
            };
  var rs = QS.Stringify(request,"request");
  Console.WriteLine(rs);
输出结果 request.child.childid=1&request.child.chidname=SS&request.child.childs=1

好了,感谢作者的分享,我们用起来吧