C#將json字符串解析成對象


首先我們在客戶端生成json字符串,通過ajax把該字符串傳到服務器端
 
//這是一個以id,email,age的json字符串
  var jdata="[{\"id\":0,\"email\":\"abccd\",\"age\":0},{\"id\":1,\"email\":\"abc1\",\"age\":2}]";
 
//將這個json字符串,傳遞到PaperMark.ashx側處理
 $.post("AJAX/PaperMark.ashx", {
                            jdata: jdata
                          
                        }, function(data, textStatus) {
    });
 
在PaperMark.ashx我們要引用下面的命名空間
using System.Web.Script.Serialization;
using System.Collections.Generic;
 
 string jsonData = context.Request.Form["jdata"];  //取得這個json字符串
 
//做一個類id,email,age和json格式一致
  public class Person
    {
        public int id { set; get; }
        public String email { set; get; }
        public int age { set; get; }
    }
 
//這個一個反序列化的方法,用於返回泛型集合
 public static T JSONToObject<T>(string jsonText)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        return jss.Deserialize<T>(jsonText);
    }
//調用上面這個方法,把json字符串傳進去,就得到一個對象集合了
 List<Person> DataReust = JSONToObject<List<Person>>(jsonData);
        for (int i = 0; i < DataReust.Count; i++)
        {
            string j = DataReust[i].email;
        }
 
注意點:
json字符串的構造一定要正確。要不然解析不出來。

為了在js端更為方便的構造出正確的json對象,我做了一些函數用於生成json字符串

             var jstr = "";
              var jsData = "[";   //這個就是最后生成的json字符串
            
              function AddJsonItemStart() {
                  jstr = "";
              }

              //vtype==int的時候不加引號

              function AddJsonItem(name, val, vtype) {

                  if (jstr == "") {
                      //為整型的情況下面
                      if (vtype == "int") {
                          jstr = "{\"" + name + "\":" + val + ",";
                      }
                      else {
                          //為字符串的情況下面
                          jstr = "{\"" + name + "\":\"" + val + "\",";
                      }

                  }
                  else {
                      if (vtype == "int") {
                          jstr = jstr + "\"" + name + "\":" + val + ",";
                      }
                      else {
                          jstr = jstr + "\"" + name + "\":\"" + val + "\",";
                      }


                  }
              }

              function AddJsonItemOK() {
                  jstr = jstr.substring(0, jstr.length - 1) + "},";
                  jsData = jsData + jstr;
              }

              function AddJsonEnd() {
                  jsData = jsData.substring(0, jsData.length - 1) + "]";
              }

           使用方法:

                  AddJsonItemStart();
                  AddJsonItem("id", 1, "int");
                  AddJsonItem("email", "abc", "string");
                  AddJsonItem("age", 5, "int");
                  AddJsonItemOK();

                  AddJsonItemStart();
                  AddJsonItem("id", 2, "int");
                  AddJsonItem("email", "cef", "string");
                  AddJsonItem("age", 6, "int");
                  AddJsonItemOK();
                  AddJsonEnd();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM