源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Json序列化和反序列化方法解析

  • 时间:2020-03-09 12:24 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Json序列化和反序列化方法解析
[u]复制代码[/u] 代码如下:
 /// <summary>         /// Json序列化,用于发送到客户端         /// </summary>         public static string ToJsJson(this object item)         {             DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());             using (MemoryStream ms = new MemoryStream())             {                 serializer.WriteObject(ms, item);                 StringBuilder sb = new StringBuilder();                 sb.Append(Encoding.UTF8.GetString(ms.ToArray()));                 return sb.ToString();             }         }         /// <summary>         /// Json反序列化,用于接收客户端Json后生成对应的对象         /// </summary>         public static T FromJsonTo<T>(this string jsonString)         {             DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));             MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));             T jsonObject = (T)ser.ReadObject(ms);             ms.Close();             return jsonObject;         }
实体类
[u]复制代码[/u] 代码如下:
    [DataContract]     public class TestObj     {         [DataMember]         public string make { get; set; }         [DataMember]         public string model { get; set; }         [DataMember]         public int year { get; set; }         [DataMember]         public string color { get; set; }     }
------------------javascript获取Json-------------------- javascript调用测试代码
[u]复制代码[/u] 代码如下:
$('#getJson').click(function() {                 $.ajax({                     url: "getJsonHandler.ashx",                     type: 'GET',                     data: {},                     dataType: 'json',                     timeout: 1000,                     error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus) },                     success: function(result) {                         alert(result.make);                         alert(result.model);                         alert(result.year);                         alert(result.color);                     }                 });             });
C#后台生成代码
[u]复制代码[/u] 代码如下:
public class getJsonHandler: IHttpHandler     { public void ProcessRequest(HttpContext context)         {             TestObj obj = new TestObj();             obj.make = "Make is Value";             obj.model = "Model is Value";             obj.year = 999;             obj.color = "Color is Value";             context.Response.Write(obj.ToJsJson());         }  public bool IsReusable         {             get             {                 return false;             }         } } //返回值为 {"color":"Color is Value","make":"Make is Value","model":"Model is Value","year":999}
-----------------C#由Json生成对象----------------------- javascript调用测试代码
[u]复制代码[/u] 代码如下:
           $('#postJson').click(function() {                 var m_obj = { make: "Dodge", model: "Coronet R/T", year: 1968, color: "yellow" };                 var jsonStr = JSON.stringify(m_obj); //用Json2.js生成Json字符串                 $.ajax({                     url: "postJsonHandler.ashx",                     type: 'POST',                     data: { postjson: jsonStr },                     dataType: 'json',                     timeout: 1000,                     error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus) },                     success: function(result) {                         alert(result.success);                     }                 }); });
C#后台生成代码
[u]复制代码[/u] 代码如下:
public class postJsonHandler: IHttpHandler     {         public void ProcessRequest(HttpContext context)         {             string jsonStr = context.Request["postjson"];             TestObj obj = jsonStr.FromJsonTo<TestObj>();             if (string.IsNullOrEmpty(obj.make) || string.IsNullOrEmpty(obj.model) || string.IsNullOrEmpty(obj.color) || obj.year < 0)             {                 context.Response.Write("{success:false}");             }             else             {                 context.Response.Write("{success:true}");             } public bool IsReusable         {             get             {                 return false;             }         } }
使用Json时需要注意,服务器端拼凑生成Json字符串时,一定要注意把字符串用\"\"包裹,不然客户端接收时肯定会报错,根据Json字符串生成对象,是根据对应的名称赋值,多于或少于都不会报错.
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部