我有一个接收IFormCollection类型对象的方法,因为我需要处理文件。
[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
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的回归
{
"companies[0]": "1-1"
}预期收益
{
"companies": [
"1-1"
]
}我哪里错了?如何处理数组或如何发送数组?
发布于 2020-08-11 14:43:26
如果想要在JObject中存储数组,可以使用JArray Class来表示Json数组。
请参考以下代码:
[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;
}测试结果如下:


https://stackoverflow.com/questions/63341722
复制相似问题