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

Jquery 从客户端发送JSON数据后,如何在服务器端反序列化JSON数据,jquery,asp.net,json,Jquery,Asp.net,Json,这样我就可以发送json数据 通过这种方式,我构建了json数据,如下所示 所以我只想知道如何在服务器端用c#编写代码,这将把我的json数据反序列化到反馈类中 我的反馈类具有相同的属性,如名称、主题、电子邮件、消息等。请告诉我如何使用反序列化填充反馈类 请帮我写代码。谢谢请查看以下库: 您可以反序列化JSON,如下所示: string json = "{\"Name\":\"name\",\"Subject\":\"subject\",\"Email\":\"email\",\"Messa

这样我就可以发送json数据

通过这种方式,我构建了json数据,如下所示


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

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


请帮我写代码。谢谢

请查看以下库:

您可以反序列化JSON,如下所示:

string json = "{\"Name\":\"name\",\"Subject\":\"subject\",\"Email\":\"email\",\"Message\":\"message\"}";
FeedBack feedBack = Newtonsoft.Json.JsonConvert.DeserializeObject<FeedBack>(json);
或者,您可以使用内置的.NET Framework JSON序列化程序类:

JavaScriptSerializer serializer=新的JavaScriptSerializer();
FeedBack=serializer.Deserialize(json);
您可以使用,请查看位于的示例。

尝试以下方法: 使用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);
    }
}
feedback fb=新反馈();
fb=JSONSerializer.ConvertFromJSON(json);
类JSONSerializer
{
公共静态字符串GetJSONString(对象数据)
{
JavaScriptSerializer serializer=新的JavaScriptSerializer();
返回序列化程序。序列化(数据);
}
公共静态T ConvertFromJSON(字符串json)
{
JavaScriptSerializer serializer=新的JavaScriptSerializer();
返回序列化程序。反序列化(json);
}
}

实际上,您不需要做任何事情。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是的,joe在您的情况下是绝对正确的,即使您已经创建了对象,您也不需要进行反序列化,我现在为json编辑了它,而不是以前为webmethod编辑了msgparameter@abhi:事实上,我的方法是正确的。如果传入包含这四个字段的对象,则方法将具有相同的4个参数。如果传入一个带有一个字段的JSON对象,而该字段又有四个自己的字段,那么一个字段的名称将与C#(msg)中的参数名称匹配,JSON对象的字段名称将与
反馈
类的属性名称匹配。
json
变量名不会被发送到C#code中。@user728750:使用JSON2.js库会使生活变得更轻松一些。它将允许您获取一个JSON对象并将其转换为字符串,因此您不必担心这一部分-您可以获取一个常规JSON对象,调用
JSON.stringify(someobj)
,它会给你一个字符串,你可以在你的AJAX调用中使用。是的,joe json2.js是使用jQuery+AJAX+Asp的理想解决方案。你在这里展示了一种不同的json格式,所以我认为我的json数据会起作用吗?var json=“{'Name':'”+$('input[id*='txtName']).val()+“,'Subject':'”+$('input[id*='txtName']).val()+“,'Email':'”+$('input[id*='txtmail']).val()+“,'Message:'“+jQuery.trim($('Message'.Message').val())+“}”;u显示类似字符串json=“{\'Name\”:\“Name\”,\“Subject\”:\“Subject\”,\“Email\”:“Email\”,\“Message\”:“Message\”;所以,请告诉我,我是否需要根据你的风格构建json数据,如“电子邮件”……请指导。谢谢斜杠只是用来转义字符串中的双引号。我用单引号检查了相同的代码,比如“{'Name':'Name',…}”,它工作得很好。但是,有效的JSON应该使用双引号。见:
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);
    }
}
[WebMethod]
public static void SaveData(string Name, string Subject, string Email, string Message)
{
    // Do something
}
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
}