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数据。

 

 

你可能感兴趣的:(json)