c# - 如何在 C# 中读取 JsonResult 对象
问题描述
我正在尝试反序列化我的 jsonresult,但我收到以下错误消息:
“无法从 System.Web.Mvc.Result 转换为字符串”
这是我的json结果:
[{"description":"BANANA","quantity":"12","productPrice":"40000","discount":"","isTaxable":true,"finalPrice":"9999","lineItemTotal":"999","orderId":8},{"description":"APPLES","quantity":"20","productPrice":"860000","discount":"","isTaxable":false,"finalPrice":"12000","lineItemTotal":"10000","orderId":8}]
这是我的控制器方法:
[System.Web.Mvc.HttpPost]
public JsonResult CreateLineItems(JsonResult data)
{
ResultDto dto = JsonConvert.DeserializeObject<ResultDto>(data);
//for (int i = 0; i < data.Data; i++)
//{
//
//}
return data;
}
这是我的 ResultDto 类:
public class ResultDto
{
public string description { get; set; }
public string quantity { get; set; }
public string productPrice { get; set; }
public string discount { get; set; }
public bool isTaxable { get; set; }
public string finalPrice { get; set; }
public string lineItemTotal { get; set; }
public int orderId { get; set; }
}
JsonResut 包含两个对象(即香蕉和苹果)。所以,我想遍历 Data 并获得两个 ResultDtos 。我如何实现这一目标?
这一行给了我错误:`ResultDto dto = JsonConvert.DeserializeObject(data);
我正在从视图中发送这样的数据:
$.ajax({
url: url,
data: {
data: JSON.stringify(lineitems)
},
cache: false,
type: "POST",
success: function (data) {
},
error: function (reponse) {
alert("error : " + reponse);
}
});
在我的控制器中获取这些数据(这是一个对象数组)的最佳方法是什么?一旦我在我的控制器中获得这些数据,我想将它保存在数据库中。所以,我不确定 JsonResult 是否是我的方法的正确返回类型。
解决方案
你已经有一个 JSON。现在解决您的问题的方法是将您的 JSONObject 字符串化,然后将其反序列化为您想要的类型。
string json = JsonConvert.SerializeObject(jsonResult.Data);
ResultDto dto = JsonConvert.DeserializeObject<ResultDto>(json);
推荐阅读
- java - 如何为不需要打开应用程序的android应用程序创建离线通知
- excel - 使用用户表单进行数据库查找
- c# - 使用 xmlreader 阅读时如何跳过无效的 xml 节点?
- c# - C# 将泛型列表传递给 WinForm 构造函数
- google-apps-script - 如何使用脚本将条件格式规则从一张纸复制到另一张纸?
- python - 如何使用flask和pytest测试端点异常?
- c# - 如何在 asp.net core blazor 的通用服务中使用任何模型
- ssas - MDX 查询有效,但忽略 EXCEPT 子句
- java - LWJGL 在启动时崩溃
- wix - 在我的 Windows WiX 安装程序中,我的自定义操作不运行