从客户端发送后,如何在服务器端反序列化JSON数据

时间:2011-08-11 13:56:57

标签: jquery asp.net json

这样我发送我的json数据

这样我构建我的json数据,如下面的


function Post(carousel, first, last, per_page, page) {
  var json = "{'Name':'" + $("input[id*='txtName']").val() +
            "','Subject':'" + $("input[id*='txtSubject']").val() +
            "','Email':'" + $("input[id*='txtEmail']").val() +
            "','Message':'" + jQuery.trim($('.message').val()) + "'}";



    $.ajax({
        type: "POST",
        url: "Feedback.aspx/SaveData",
        data: json ,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
           'here is my success code'
        }
    });
}

所以我只想知道如何使用c#在服务器端编写代码,这将把我的json数据反序列化为反馈类。

我的反馈类具有相同的属性,如姓名,主题,电子邮件,消息等。请告诉我如何使用反序列化来填充反馈类。

请帮我解决问题。感谢

4 个答案:

答案 0 :(得分:4)

你实际上不需要做任何事情。 ASP.NET将为您完成。只需使用适当的参数定义您的方法,它就会自动运行:

[WebMethod]
public static void SaveData(string Name, string Subject, string Email, string Message)
{
    // Do something
}

或者既然已经定义了这个类,你只需要在对象周围包装你的javascript字段:

var json = "{'msg':{'Name':'" + $("input[id*='txtName']").val() +
            "','Subject':'" + $("input[id*='txtSubject']").val() +
            "','Email':'" + $("input[id*='txtEmail']").val() +
            "','Message':'" + jQuery.trim($('.message').val()) + "'}}";

[WebMethod]
public static void SaveData(Feedback msg)
{
    // Do something
}

答案 1 :(得分:2)

查看以下库:

Json.NET

您可以像这样反序列化JSON:

string json = "{\"Name\":\"name\",\"Subject\":\"subject\",\"Email\":\"email\",\"Message\":\"message\"}";
FeedBack feedBack = Newtonsoft.Json.JsonConvert.DeserializeObject<FeedBack>(json);

...

public class FeedBack
{
    public string Name { get; set; }
    public string Subject { get; set; }
    public string Email { get; set; }
    public string Message { get; set; }
}

或者您可以使用内置的.NET Framework JSON序列化程序类:

JavaScriptSerializer Class

JavaScriptSerializer serializer = new JavaScriptSerializer();
FeedBack feedBack = serializer.Deserialize<FeedBack>(json);

答案 2 :(得分:2)

答案 3 :(得分:1)

试试这个: 使用System.Web.Script.Serialization;

feedback fb = new feedback ();

fb = JSONSerializer.ConvertFromJSON<feedback>(json);

class JSONSerializer
{
    public static string GetJSONString(object data)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        return serializer.Serialize(data);
    }
    public static T ConvertFromJSON<T>(String json)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        return serializer.Deserialize<T>(json);
    }
}