首页 > 解决方案 > 如何在 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 是否是我的方法的正确返回类型。

标签: c#jsonresult

解决方案


你已经有一个 JSON。现在解决您的问题的方法是将您的 JSONObject 字符串化,然后将其反序列化为您想要的类型。

string json = JsonConvert.SerializeObject(jsonResult.Data);
ResultDto dto = JsonConvert.DeserializeObject<ResultDto>(json);

推荐阅读