Asp.Net中JSON的序列化和反序列化-----JavaScriptSerializer ,加上自己工作心得

在工作中和手机通信用到web服务和javascriptSerializer,返回json数据,供手机端调用,一开始返回的数据是一大堆,比如

[{"word_picture9":"http://boss.xbxw.net/Upload/word/guojia/p_yinggelan.jpg","word_picture8":"http://boss.xbxw.net/Upload/word/guojia/p_zhongguo.jpg","word_voice2":"http://boss.xbxw.net/Upload/voice/approve.mp3","word_picture13":"http://boss.xbxw.net/Upload/word/gaokao/p_qingxu.jpg","word_voice14":"http://boss.xbxw.net/Upload/voice/Laos.mp3","word_picture10":"http://boss.xbxw.net/Upload/word/jijie/p_chuntian.jpg","word_voice11":"http://boss.xbxw.net/Upload/voice/Tidy.mp3","word_voice1":"http://boss.xbxw.net/Upload/voice/Mexico.mp3","word_picture15":"http://boss.xbxw.net/Upload/word/gaokao/p_dizhixue.jpg","word_picture16":"http://boss.xbxw.net/Upload/word/gaokao/p_youhuo.jpg","word_voice17":"http://boss.xbxw.net/Upload/voice/Austria.mp3","word_voice10":"http://boss.xbxw.net/Upload/voice/Spring.mp3","word_voice3":"http://boss.xbxw.net/Upload/voice/Giant.mp3","word_voice0":"http://boss.xbxw.net/Upload/voice/Fertilizer.mp3","word_picture12":"http://boss.xbxw.net/Upload/word/jiaotong/p_qianshuiting.jpg","word_picture17":"http://boss.xbxw.net/Upload/word/guojia/p_aodili.jpg","word_voice16":"http://boss.xbxw.net/Upload/voice/Temptation.mp3","word_voice6":"http://boss.xbxw.net/Upload/voice/Oxygen.mp3","word_voice12":"http://boss.xbxw.net/Upload/voice/submarine.mp3","word_voice13":"http://boss.xbxw.net/Upload/voice/mood.mp3","word_voice4":"http://boss.xbxw.net/Upload/voice/Volunteer.mp3","word_picture14":"http://boss.xbxw.net/Upload/word/guojia/p_laowo.jpg","word_voice5":"http://boss.xbxw.net/Upload/voice/label.mp3","word_voice8":"http://boss.xbxw.net/Upload/voice/china.mp3","word_voice9":"http://boss.xbxw.net/Upload/voice/England.mp3","word_picture11":"http://boss.xbxw.net/Upload/word/gaokao/p_zhegnjiede.jpg","word_voice7":"http://boss.xbxw.net/Upload/voice/Dusk.mp3","word_picture5":"http://boss.xbxw.net/Upload/word/gaokao/p_biaoqian.jpg","word_picture4":"http://boss.xbxw.net/Upload/word/gaokao/p_zhiyuanzhe.jpg","word_picture7":"http://boss.xbxw.net/Upload/word/gaokao/p_huanghun.jpg","word_picture6":"http://boss.xbxw.net/Upload/word/gaokao/p_yangqi.jpg","word_picture1":"http://boss.xbxw.net/Upload/word/guojia/p_moxige.jpg","word_picture0":"http://boss.xbxw.net/Upload/word/gaokao/p_feiliao.jpg","word_picture3":"http://boss.xbxw.net/Upload/word/gaokao/p_juren.jpg","word_picture2":"http://boss.xbxw.net/Upload/word/gaokao/p_pizhun.jpg","word_voice15":"http://boss.xbxw.net/Upload/voice/Geology.mp3"}]

 

用的方法是

 

///这个方法是得到单词相关信息

 

[WebMethod]
public string getWord(int ban)
{
CoDBHelper helper = new CoDBHelper("Server=120.192.19.41;database=KSXT;uid=sa;pwd=#rl42s3cx");
DataSet ds = helper.ExecuteQueryDS("select top 18 word_picture,word_voice from word where ban=" + ban + " order by newid()");
DataTable dt = new DataTable();
dt = ds.Tables[0];
Hashtable ht = new Hashtable();
ArrayList eventList = new ArrayList();
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{

string word_picture = dt.Rows[i]["word_picture"].ToString();
string word_voice = dt.Rows[i]["word_voice"].ToString();
ht.Add("word_picture" + i, word_picture);
ht.Add("word_voice" + i, word_voice);

}
}
eventList.Add(ht);

JavaScriptSerializer ser = new JavaScriptSerializer();
String jsonStr = ser.Serialize(eventList);
return jsonStr;
}

通过下面原作者得到的结果看得到的数据应该是[{"name":"wanwan","age:65"},{"name":"xiaohua","age:25"}],这样的形式,而不是一个中括号,一个大括号了事,经过对上面的观察结合下面的文章,发现一个对象代表一条数据,所以,上面的应该改成

Hashtable ht = null;

ArrayList eventList = new ArrayList();
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
ht=new HashTable()
string word_picture = dt.Rows[i]["word_picture"].ToString();
string word_voice = dt.Rows[i]["word_voice"].ToString();
ht.Add("word_picture" + i, word_picture);
ht.Add("word_voice" + i, word_voice);
eventList.Add(ht);
}
}

这样,每次循环一次,new一个对象,然后对象添加到list集合里,循环玩后list集合里就集中了很多hashtable对象,每一个对象将来就是一个大括号里的数据,序列化完事后就是下面的样式

 

[{"word_picture0":"http://boss.xbxw.net/Upload/word/yueqi/p_xiaotiqin.jpg","word_voice0":"http://boss.xbxw.net/Upload/voice/violin.mp3"},{"word_voice1":"http://boss.xbxw.net/Upload/voice/drum.mp3","word_picture1":"http://boss.xbxw.net/Upload/word/yueqi/p_gu.jpg"},{"word_voice2":"http://boss.xbxw.net/Upload/voice/shovel.mp3","word_picture2":"http://boss.xbxw.net/Upload/word/shenghuo/p_chanzi.jpg"},{"word_picture3":"http://boss.xbxw.net/Upload/word/gaokao/p_fenmo.jpg","word_voice3":"http://boss.xbxw.net/Upload/voice/Powder.mp3"},{"word_voice4":"http://boss.xbxw.net/Upload/voice/Media.mp3","word_picture4":"http://boss.xbxw.net/Upload/word/gaokao/p_duomeiti.jpg"},{"word_picture5":"http://boss.xbxw.net/Upload/word/gaokao/p_luxianhangxian.jpg","word_voice5":"http://boss.xbxw.net/Upload/voice/Route.mp3"},{"word_picture6":"http://boss.xbxw.net/Upload/word/gaokao/p_wangluo.jpg","word_voice6":"http://boss.xbxw.net/Upload/voice/network.mp3"},{"word_picture7":"http://boss.xbxw.net/Upload/word/gaokao/p_guzhang.jpg","word_voice7":"http://boss.xbxw.net/Upload/voice/Applause.mp3"},{"word_voice8":"http://boss.xbxw.net/Upload/voice/Liberia.mp3","word_picture8":"http://boss.xbxw.net/Upload/word/guojia/p_libiliya.jpg"},{"word_picture9":"http://boss.xbxw.net/Upload/word/gaokao/p_qiyou.jpg","word_voice9":"http://boss.xbxw.net/Upload/voice/petrol.mp3"},{"word_voice10":"http://boss.xbxw.net/Upload/voice/Nylon.mp3","word_picture10":"http://boss.xbxw.net/Upload/word/gaokao/p_nilong.jpg"},{"word_picture11":"http://boss.xbxw.net/Upload/word/jiaotong/p_kache.jpg","word_voice11":"http://boss.xbxw.net/Upload/voice/Truck.mp3"},{"word_picture12":"http://boss.xbxw.net/Upload/word/guojia/p_baxi.jpg","word_voice12":"http://boss.xbxw.net/Upload/voice/Brazil.mp3"},{"word_voice13":"http://boss.xbxw.net/Upload/voice/sketch.mp3","word_picture13":"http://boss.xbxw.net/Upload/word/gaokao/p_sumiao.jpg"},{"word_picture14":"http://boss.xbxw.net/Upload/word/dianzi/p_shubiao.jpg","word_voice14":"http://boss.xbxw.net/Upload/voice/mouse.mp3"},{"word_voice15":"http://boss.xbxw.net/Upload/voice/deposit.mp3","word_picture15":"http://boss.xbxw.net/Upload/word/gaokao/p_cunkuan.jpg"},{"word_picture16":"http://boss.xbxw.net/Upload/word/jiaotong/p_tuolaji.jpg","word_voice16":"http://boss.xbxw.net/Upload/voice/tractor.mp3"},{"word_picture17":"http://boss.xbxw.net/Upload/word/jiaotong/p_silunmache.jpg","word_voice17":"http://boss.xbxw.net/Upload/voice/wagon.mp3"}]

 

 

 

 

 

下面是原来作者的

命名空间:

        ASP.NET中的JSON序列化和反序列化还可以使用JavaScriptSerializer,在System.Web.Script.Serializatioin命名空间下,需引用System.Web.Extensions.dll.

 

实例:

 class People
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public DateTime Age { get; set; }
    }

序列化:

 List<People> list = new List<People>();
        People peo = new People();
        peo.Id = 1;
        peo.Name = "zhangsan";
        peo.Age = DateTime.Now;
         list.Add(peo);

         People peo2 = new People();
         peo2.Id = 2;
         peo2.Name = "lisi";
         peo2.Age = DateTime.Now;
         list.Add(peo2);

        JavaScriptSerializer ser = new JavaScriptSerializer();

        TextBox1.Text = ser.Serialize(list);

显示结果:

[

{"Id":1,"Name":"zhangsan","Age":"\/Date(1363336335448)\/"},

{"Id":2,"Name":"lisi","Age":"\/Date(1363336335448)\/"}

]

 

反序列化:

 string json = TextBox1.Text;

        JavaScriptSerializer ser=new JavaScriptSerializer();

        List<People> list = ser.Deserialize<List<People>>(json);

        foreach (People peo in list)
        {
            Response.Write(peo.Name + "<br>" + peo.Id + "<br>" + peo.Age);
            Response.Write("<hr>");
        }

 

前台脚本解析:

$(":submit:eq(2)").click(function () {
                // return false;
                $.getJSON("../logic/October.ashx", { code: "one" }, function (data) {
                    $.each(data, function (key, val) {
                        $("p").append(key + "--->>" + val + "<br>");
                        $.each(val, function (k, v) {
                            $("h5").append(k+"---->>"+v+"<hr>");
                        });
                        
                    });
                });
                return false;
            });

转载于:https://www.cnblogs.com/wanshutao/p/3923952.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在VS2008,可以使用JavaScriptSerializer类来进行JSON序列化反序列化。以下是一个简单的示例: ```csharp using System.Web.Script.Serialization; // 序列化对象为JSON字符串 MyClass obj = new MyClass(); JavaScriptSerializer serializer = new JavaScriptSerializer(); string jsonString = serializer.Serialize(obj); // 反序列化JSON字符串为对象 MyClass newObj = serializer.Deserialize<MyClass>(jsonString); ``` 其,MyClass是需要序列化反序列化的类。你可能需要添加`System.Web.Extensions`引用以使用JavaScriptSerializer类。 ### 回答2: 在VS2008,我们可以使用.NET框架提供的Json.NET库来实现JSON反序列化序列化。 要进行JSON反序列化,我们首先需要将JSON字符串转换为对应的.NET对象。我们可以使用JsonConvert类的DeserializeObject方法来实现,该方法接受两个参数:要反序列化JSON字符串和要转换的.NET类型。调用该方法后,会返回一个对应的.NET对象。 示例代码如下所示: ``` string jsonString = "{\"name\":\"John\",\"age\":30}"; Person person = JsonConvert.DeserializeObject<Person>(jsonString); ``` 在这个示例,我们将一个JSON字符串反序列化为一个Person对象。 要进行JSON序列化,我们需要将对应的.NET对象转换为JSON字符串。我们可以使用JsonConvert类的SerializeObject方法来实现,该方法接受一个参数:要序列化的.NET对象。调用该方法后,会返回对应的JSON字符串。 示例代码如下所示: ``` Person person = new Person { Name = "John", Age = 30 }; string jsonString = JsonConvert.SerializeObject(person); ``` 在这个示例,我们将一个Person对象序列化为一个JSON字符串。 需要注意的是,为了在VS2008使用Json.NET库,我们需要先将它添加到项目的引用。可以从Json.NET官方网站下载并安装适用于VS2008的版本。 总结起来,要在VS2008进行JSON反序列化序列化,我们可以使用Json.NET库提供的JsonConvert类的DeserializeObject和SerializeObject方法来实现。 ### 回答3: 在VS2008,我们可以使用JavaScriptSerializer类来实现JSON反序列化序列化。 首先,要进行反序列化操作,我们可以使用JavaScriptSerializer类的Deserialize方法。该方法接受一个JSON字符串作为参数,并将其转换为对象或类型。例如: ``` string jsonString = "{\"name\":\"John\", \"age\":30}"; JavaScriptSerializer serializer = new JavaScriptSerializer(); var obj = serializer.Deserialize(jsonString); ``` 在上述代码,我们创建了一个JSON字符串,表示一个包含"name"和"age"属性的对象。然后,我们实例化了JavaScriptSerializer类,并调用其Deserialize方法,将jsonString转换为一个对象。 接下来,要进行序列化操作,我们可以使用JavaScriptSerializer类的Serialize方法。该方法接受一个对象作为参数,并将其转换为JSON字符串。例如: ``` var obj = new { name = "John", age = 30 }; JavaScriptSerializer serializer = new JavaScriptSerializer(); string jsonString = serializer.Serialize(obj); ``` 在上述代码,我们创建了一个包含"name"和"age"属性的匿名对象。然后,我们实例化了JavaScriptSerializer类,并调用其Serialize方法,将obj对象转换为一个JSON字符串。 需要注意的是,VS2008JavaScriptSerializer类只适用于比较简单的JSON操作。对于复杂的JSON数据结构或需要更高级的操作,可能需要使用第三方JSON库或升级到新版本的Visual Studio。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值