问题描述:
前端post的json数据是动态的,可能是这样:
{
“HPHM”:"冀A12345",
"HPZL":"02-小型汽车",
"BSX":"01-自动"
}
也可能是这样:
{
“HPHM”:"冀A12345",
"HPZL":"02-小型汽车",
"BSX":"01-自动",
"CPYS":"01-白色"
}
controller的action需要接收json数据动态解析,将数据插入数据库Table(Table也是动态扩展的)
代码:
//using System.Text.Json;
//.net 5
[ActionDescription("Sys.Create")]
[HttpPost]
public IActionResult Add([FromBody] dynamic obj)//使用dynamic参数接收前端的Json数据(每次请求的Json数据可能都不一样)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState.GetErrorJson());
}
else
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("insert into PrecheckCarInfos(ID,");
JsonDocument jd = JsonDocument.Parse(JsonSerializer.Serialize(obj));//解析Json
var enumerate = jd.RootElement.EnumerateObject();//获取Json文档根元素Json对象的属性枚举
Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
while (enumerate.MoveNext())//遍历
{
keyValuePairs.Add(enumerate.Current.Name, enumerate.Current.Value.ToString());
}
foreach (var item in keyValuePairs)//拼接SQL语句
{
sb.Append(item.Key + ",");
}
sb.Append("RecordTime");
sb.AppendLine(") values('" + Guid.NewGuid().ToString() + "',");
foreach (var item in keyValuePairs)
{
sb.Append("'" + item.Value + "',");
}
sb.Append("'" + DateTime.Now.ToString("yyyy-MM-dd") + "')");
int rv = DC.ExecuteNonSQL(sb.ToString());//执行SQL语句
CommonDTO<PrecheckCarInfo> dto = new CommonDTO<PrecheckCarInfo>()
{
Code = 200,
Msg = "success",
Data = null
};
return Ok(dto);
}
}