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

 

 

posted @ 2012-09-05 16:23  のんきネコ  阅读(4016)  评论(0编辑  收藏  举报