首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在IFormCollection中处理数组键

如何在IFormCollection中处理数组键
EN

Stack Overflow用户
提问于 2020-08-10 22:00:47
回答 1查看 232关注 0票数 0

我有一个接收IFormCollection类型对象的方法,因为我需要处理文件。

代码语言:javascript
复制
    [HttpPost]
    [AllowAnonymous]
    [Route("StoreData")]
    public async Task<IActionResult> StoreDataX(IFormCollection obj)
    {
      var item = FormCollectionToJson(obj);
      var id = this.Service.SaveDynamicData(item, "");

      return StatusCode(200, JObject.FromObject(new
      {
        message = "Registration included and workflow started."
      }));
    }

我将IFormCollection密钥转换为JObject

代码语言:javascript
复制
private JObject FormCollectionToJson(IFormCollection obj)
    {
      dynamic json = new JObject();

      if (obj.Keys.Any())
      {
        foreach (string key in obj.Keys)
        {
          var value = obj[key][0];
          json.Add(key, value);
        }
      }
      return json;
    }

但是当我收到一个数组时,我不能进行转换,我如何处理这种类型的数据?

邮递员请求

FormCollectionToJson的回归

代码语言:javascript
复制
{
  "companies[0]": "1-1"
}

预期收益

代码语言:javascript
复制
{
  "companies": [
    "1-1"
  ]
}

我哪里错了?如何处理数组或如何发送数组?

EN

Stack Overflow用户

回答已采纳

发布于 2020-08-11 14:43:26

如果想要在JObject中存储数组,可以使用JArray Class来表示Json数组。

请参考以下代码:

代码语言:javascript
复制
    [HttpPost] 
    public async Task<IActionResult> Post(IFormCollection obj)
    {
        var item = FormCollectionToJson(obj);
        return StatusCode(200, JObject.FromObject(new
        {
            message = "Registration included and workflow started."
        }));
    }
    private JObject FormCollectionToJson(IFormCollection obj)
    {
        dynamic json = new JObject();
        if (obj.Keys.Any())
        {
            foreach (string key in obj.Keys)
            {   //check if the value is an array                 
                if (obj[key].Count > 1)
                {
                    JArray array = new JArray();
                    for (int i = 0; i < obj[key].Count; i++)
                    {
                        array.Add(obj[key][i]);
                    }
                    json.Add(key, array);
                }
                else
                {
                   var value = obj[key][0];
                    json.Add(key, value);
                }
            }
        }
        return json;
    }

测试结果如下:

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63341722

复制
相关文章

相似问题

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