繁体   English   中英

通过Jquery Ajax解析C#中的JSON对象

[英]Parse JSON object in c# passed through jquery Ajax

我知道这是ASP.net中最常见的问题之一,但是我的情况有些不同。

我有一个json对象,我将其转换为字符串并将其通过jquery ajax传递给web方法。

function Save() {
            var content = $('#radGridSMT_ctl00 tr').not('#radGridSMT_ctl00 thead tr');
            var header = $('#radGridSMT_ctl00_Header thead tr');
            var result = [];
            for (var i = 0; i < content.length - 1; i++) {
                item = {}
                var headerName;
                item[header[0].children[0].textContent] = content[i].children[0].textContent;
                item[header[0].children[1].textContent] = content[i].children[1].textContent;
                item[header[0].children[2].textContent] = content[i].children[2].textContent;
                item[header[0].children[3].textContent] = content[i].children[3].textContent;
                item[header[0].children[4].textContent] = content[i].children[4].textContent;
                item[header[0].children[5].textContent] = content[i].children[5].textContent;
                item[header[0].children[6].textContent] = content[i].children[6].textContent;
                item[header[0].children[7].textContent] = content[i].children[7].textContent;
                item[header[0].children[8].textContent] = content[i].children[8].textContent;
                item[header[0].children[9].textContent] = content[i].children[9].textContent;
                item[header[0].children[10].textContent] = content[i].children[10].textContent;
                item[header[0].children[11].textContent] = content[i].children[11].textContent;
                item[header[0].children[12].textContent] = content[i].children[12].textContent;
                result.push(item);
            }
            result = JSON.stringify({ data: result });
            $.ajax({
                type: "POST",
                url: "SMTRequiredHour.aspx/SaveData",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: result,
                success: function (response) {

                },
                failure: function (response) {

                }
            });
        }

现在,当我在Web方法中收到它时,它是以对象的形式出现的。

    [WebMethod]
    public static void SaveData(object data)
    {
        CreateDatatable(data);
        var d = initialData;
        var obj = JsonConvert.DeserializeObject(data);
    }

JsonConvert.DeserializeObject接受字符串而不是对象,这就是问题所在。 我无法将JSON对象转换为字符串。

我无法创建强类型对象,因为json对象中的列是动态生成的,并且每次可能都不相同。

如何将JSON对象解析为字符串,以便可以反序列化它。

data.ToString()返回什么?

如果无法解决问题,请尝试从JavaScript端将其作为文本发送。 您可以使用data: JSON.stringify(result),然后在Web方法中将数据类型设置为string。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM