json - .NET Core - 如何上传 JSON 文件?
问题描述
我正在尝试上传 JSON 文件以从中读取值并将它们保存在数据库中,但我对此有疑问。我的控制器的代码如下所示:
[Produces("application/json")]
[Route("api/[controller]")]
[ApiController]
public class ImportController : ControllerBase
{
private readonly DatabaseContext dbContext;
public ImportController(DatabaseContext dbContext)
{
this.dbContext = dbContext;
}
[HttpPost]
public IActionResult ImportData(IFormFile file)
{
var content = string.Empty;
using (var reader = new StreamReader(file.OpenReadStream()))
{
content = reader.ReadToEnd();
}
List<UserModel> userObjects = null;
try
{
userObjects = JsonConvert.DeserializeObject<List<UserModel>>(content);
}
catch
{
return BadRequest();
}
foreach (var user in userObjects)
{
UserModel us = new UserModel
{
Username = user.Username,
Password = user.Password
};
dbContext.User.Add(us);
dbContext.SaveChanges();
}
return Ok();
}
}
我正在使用 Postman 发送 JSON 数据,但每当我尝试这样做时,都会得到以下响应:
{"用户名":["输入无效。"]}
当我尝试将 JSON 数据作为 raw->application/json 或
{"":["输入无效。"]}
当我尝试使用名为“文件”的键和 test.json 文件作为值的表单数据发送它时。
你能指引我走向正确的道路吗?我尝试将其[FromBody] UserModel user
用作操作的参数,但它只允许我处理一个 JSON 字符串。
解决方案
您可以使用[FromBody] IEnumerable<UserModel> users
来处理许多行。在这种情况下,json 应该如下所示:
[
{
"userName": "name",
"password": "password",
},
{
"userName": "name1",
"password": "password1",
}
]
推荐阅读
- python - 在系统中禁用运行脚本时如何在 Vscode 中激活虚拟环境?
- excel - 如何检查vba(Excel)硒中的“chrome” webdriver是否仍然有效
- javascript - 仅使用 Html 和 Javascript 将文件附加到 gmail
- css - 如何在 Vue 中为范围样式添加自动前缀
- python - 根据指定的字符串排列排列熊猫中的列位置
- python - 删除数组中包含在其他项目中的项目 [Python]
- python - 尝试在 python Django 中运行 Runserver 时出现运行时错误
- php - 如何在 WHMCS 插件模块中设置附加属性
- selenium - AndroidDriver 等待时秒表计时器未更新
- json - 如何使用 cloudformation 复制 AMI