【发布时间】:2020-03-06 20:04:43
【问题描述】:
动态对象的反序列化在 .NET Core 2.2 中运行良好,但在 .NET Core 3.1 中无法运行。
我正在使用Newtonsoft.Json nuget 包版本 v12.0.3。这是一个 ASP.NET Core MVC 项目。
public IActionResult Apply([FromBody]dynamic postData)
{
string serverPath = _hostingEnvironment.WebRootPath;
List<ModelData> list = new List<ModelData>();
foreach (var item in JsonConvert.DeserializeObject(postData))
{
list.Add(new ModelData
{
Key = item.Key,
Value = item.Value
});
}
}
我需要帮助来解决它
输入数据:
ValueKind = String : "[{'Key':'Table','Value':'admins'},{'Key':'MethodValue','Value':'Update'},{'Key':'Page','Value':'1'},{'Key':'Id','Value':'1'},{'Key':'ImgPath','Value':''},{'Key':'Id','Value':'1'},{'Key':'Login','Value':'admin'},{'Key':'Password','Value':'12345678999'}]"
这是我使用调试器看到的
模型数据输出
public struct ModelData
{
public string Key { get; set; }
public string Value { get; set; }
}
来自客户端页面的代码
function SendFormData(fileName) {
var jsonArr = "[{'Key':'Table','Value':'@ViewBag.Table'},{'Key':'MethodValue','Value':'@ViewBag.MethodValue'}," +
"{'Key':'Page','Value':'@ViewBag.Page'},{'Key':'Id','Value':'@ViewBag.Id'},";
jsonArr += "{'Key':'ImgPath','Value':'" + fileName + "'},";
var other_data = $("#ApplyForm").serializeArray();
$.each(other_data, function (_key, input) {
if (input.name === "Status") {
return true;
}
jsonArr += "{'Key':'" + input.name + "','Value':'" + input.value + "'},";
});
jsonArr = jsonArr.slice(0, -1);
jsonArr += "]";
$.ajax({
url: "/Admin/Apply",
type: "POST",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(jsonArr),
async: false,
success: function (returnUrl) {
AjaxLoad(returnUrl);
},
error: function () {
console.log("@Translations.UpsErrorMessage");
}
});
}
【问题讨论】:
-
输入是什么?什么是预期的输出?实际输出是多少?
-
@OmairMajid ValueKind = String : "[{'Key':'Table','Value':'admins'},{'Key':'MethodValue','Value':'Update' },{'Key':'Page','Value':'1'},{'Key':'Id','Value':'1'},{'Key':'ImgPath','Value' :''},{'Key':'Id','Value':'1'},{'Key':'Login','Value':'admin'},{'Key':'Password', '值':'12345678999'}]"
-
请同时添加
ModelData类 -
您拥有的字符串不是 JSON。 JSON 对字段名称和字符串值使用双引号
",而不是单引号' -
您是否按照Where did IMvcBuilder AddJsonOptions go in .Net Core 3.0? 的说明将您的应用从system.text.json 切换回Json.NET?
标签: c# json asp.net-core-mvc json-deserialization