如何处理 IFormCollection 中的数组键
How to process array key in IFormCollection
我有一个接收 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;
}
但是我收到的是一个数组,却无法进行转换,我该如何处理这种类型的数据?
[邮递员请求]
return 个 FormCollectionToJson
{
"companies[0]": "1-1"
}
预计return
{
"companies": [
"1-1"
]
}
我哪里错了?如何处理数组或如何发送?
如果要在 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;
}
测试结果如下:
我有一个接收 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;
}
但是我收到的是一个数组,却无法进行转换,我该如何处理这种类型的数据?
[邮递员请求]
return 个 FormCollectionToJson
{
"companies[0]": "1-1"
}
预计return
{
"companies": [
"1-1"
]
}
我哪里错了?如何处理数组或如何发送?
如果要在 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;
}
测试结果如下: