C# Json數據解析


今天碰到一個問題,需要通過json格式,將前台的數據提交到后台去,然后由后台解析后加以使用。使用Json格式進行數據傳遞,好處顯而易見。我這兒使用Json格式的原因主要是,可以只將數據綁定到一個域上,而不需要綁定多個域進行傳遞,方便數據的調用。

上網找了一些方法,里面使用的一些接口都需要再Silverlight中使用,而不能在web環境中使用。不過web框架下還是保留了一種Json數據的接口:JavaScriptSerializer

其實將json數據解析成后台數據,就是對數據的反序列化

下面我就做個簡單的例子說明一下。

在前台先將一系列Json數據放到一個數組中:

$(function(){

    var json_str = new Array();

    json_str.push(setJdata());//數組中只有一個Json數據
});

 function setJdata() {
           
            var jdata = {
                "ReleaseStatus": "更新",
                "ContentId": "CON0000007",
                "ContentType": "虎の巻",
                "ContentVolumn":"Vol.7",
                "ContentTitle":"標題~~~~~",
                "ReleaseStartTime": "2012/09/04 02:00",
                "ReleaseEndTime":"-"
            }
            
            return jdata;
 }

 當然,在提交到后台前還先需要將Json數據字符串化,以便后台進行解析。

string Json_str = "[{\"ReleaseStatus\":\"更新\",\"ContentId\":\"CON0000007\",\"ContentType\":\"虎の巻\",\"ContentVolumn\":\"Vol.7\",\"ContentTitle\":\"標題~~~~~\",\"ReleaseStartTime\":\"2012/09/04 02:00\",\"ReleaseEndTime\":\"-\"}]";

 

這時候用MVC3自帶的類庫進行解析:using System.Web.Script.Serialization;

JavaScriptSerializer js = new JavaScriptSerializer();
List<ContentModel> list = js.Deserialize<List<ContentModel>>(list.JsonData);

 

從這段代碼我們可以看到,使用這個類庫對Json數據進行解析,可以直接解析為所要的對象(ContentModel)。

如果Json數據是一個數組,還能解析為所要對象的數組對象(List<ContentModel>

 Json數據分析

需要注意的是:對象(ContentModel) 必須為可反序列化對象

    [Serializable]
    [DataContract]//得在定義對象類前,先聲明這兩個屬性 public class ContentModel 
    {
        public string ContentId { get; set; }

        public string ContentType { get; set; }

        ..........................

    }

 

以上是對數據的反序列化,那么數據的序列化該怎么做呢??

 很簡單 ,看下面一段代碼:

JavaScriptSerializer serializer = new JavaScriptSerializer();
result.TableData = serializer.Serialize(result.InputContentList);

只要調用JavaScriptSerializer的Serialize方法就可以對數據進行序列化,最后得到一個string型的json數據。

 

 


免責聲明!

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



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