.net中解析json 之 DataContractJsonSerializer类

来自:http://blog.csdn.net/xylinzai_xy/article/details/5907610

json 是轻量级的文本传输格式,一般用于前台和后台的数据交换

DataContractJsonSerializer是fm3.5中专门对json序列化和反序列化的类,以下是DataContractJsonSerializer的简单应用

 

假设客户端有个json对象,通过ajax传到后台,后台解析

 

代码如下:

[c-sharp]  view plain copy
  1. var people = [{ "UserName""t1""PassWord""111111""Sex""男" },{ "UserName""t2""PassWord""222222""Sex""女" }];  
  2. var url = "Default.aspx?people=" + escape(people.toJSONString());  
  3. request.open("POST", url, true);  
  4. request.onreadystatechange = updatePage;  
  5. request.send(null);  

toJSONString函数正常运行得引用json.js

   <script src="json.js" type="text/javascript"></script>

 

后台代码:

新建测试类 testobj (testobj中的属性和客户端传递过来的一致)

[c-sharp]  view plain copy
  1. [DataContract]//序列化  
  2. public class TestObj  
  3. {  
  4.     [DataMember]  
  5.     public string UserName { getset; }  
  6.      [DataMember]  
  7.     public string PassWord { getset; }  
  8.      [DataMember]  
  9.     public string Sex { getset; }  
  10.   
  11.   
  12. public TestObj(string u,string p,string s)  
  13.     {  
  14.         UserName = u;  
  15.         PassWord = p;  
  16.         Sex = s;  
  17.     }  
  18. }  

新建序列化和反序列化方法

[c-sharp]  view plain copy
  1. //json 序列化  
  2.   
  3.     public static string ToJsJson(object item)  
  4.     {  
  5.         DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());  
  6.         using(MemoryStream ms=new MemoryStream())  
  7.         {  
  8.             serializer.WriteObject(ms, item);  
  9.             StringBuilder sb = new StringBuilder();  
  10.             sb.Append(Encoding.UTF8.GetString(ms.ToArray()));  
  11.             return sb.ToString();  
  12.         }  
  13.     }  
  14.   
  15.     //反序列化  
  16.   
  17.     public static T FromJsonTo<T>(string jsonString)  
  18.     {  
  19.         DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));  
  20.         using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))  
  21.         {  
  22.             T jsonObject = (T)ser.ReadObject(ms);  
  23.             return jsonObject;  
  24.         }  
  25.     }  

 

调用:

反序列化json(解析)注:people即客户端传递过来

[c-sharp]  view plain copy
  1. //获取json字符串  
  2.        string jsonStr = Request["people"];  
  3.        List<TestObj> obj = Json.FromJsonTo<List<TestObj>>(jsonStr);  
  4.        foreach (TestObj item in obj)  
  5.            {  
  6.         Response.Write(string.Format("UserName:{0},Password:{1},Sex:{2}/r/n", item.UserName, item.PassWord, item.Sex));  
  7.            }  
  8.        Response.End();  

 

序列化成json字符串

[c-sharp]  view plain copy
  1. List<TestObj> Users = new List<TestObj>();  
  2. Users.Add(new TestObj("t1""1""男"));  
  3. Users.Add(new TestObj("t2""2""女"));  
  4. string json = Json.ToJsJson(Users);  
  5. Response.Write(json);  
  6. Response.End();  

 

前台获取后台返回的json字符串:

 

[c-sharp]  view plain copy
  1. function updatePage() {  
  2.           if (request.readyState == 4) {  
  3.               if (request.status == 200) {  
  4.                   var response = request.responseText;  
  5.                   //转化成对象  
  6.                   //方法1  
  7.                       response = response.parseJSON();  
  8.                   //方法2  
  9.                   // response = eval("(" + response + ")");  
  10.                   //对象访问方式  
  11.                   document.getElementById("d1").innerHTML = response[1].Sex;  
  12.                   //直接输出  
  13.                  // document.getElementById("d1").innerHTML = response;  
  14.               }  
  15.           }  
  16.       }  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET JSON是指在ASP.NET使用JSON(JavaScript Object Notation)进行数据交换和处理的技术。 JSON是一种轻量级的数据交换格式,可用于在不同平台和语言之间传输数据。在ASP.NET,可以使用不同的方法来处理JSON数据。 引用提供了一种使用开源的JSON.NET库来处理JSON数据的方法。通过将Newtonsoft.Json库添加到项目,可以使用JObject、JsonReader和JsonWriter等来处理JSON数据。这种方法非常通用和灵活,可以根据需要随时进行修改。 引用介绍了使用JsonSerializer来读写JSON对象的方法。可以使用JsonConvert.DeserializeObject方法将JSON字符串转换为对象,并使用JObject来访问和操作其的属性。这种方法适用于处理数组型数据。 引用提供了一个测试帮助JSON,其包含了parse和stringify方法。parse方法用于将JSON字符串解析为指定型的对象,而stringify方法用于将对象转换为JSON字符串。这些方法使用了System.Runtime.Serialization命名空间下的DataContractJsonSerializer。这种方法适用于对JSON数据进行序列化和反序列化操作。 总而言之,ASP.NET JSON是指在ASP.NET使用JSON进行数据交换和处理的技术。可以使用开源的JSON.NET库或者System.Runtime.Serialization命名空间下的DataContractJsonSerializer来处理JSON数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [.NET ASP.NET C#JSON详解](https://blog.csdn.net/qq_43434300/article/details/89918212)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值