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;
});
Asp.Net中JSON的序列化和反序列化-----JavaScriptSerializer ,加上自己工作心得的更多相关文章
- Asp.net中Json的序列化和反序列化(一)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- ASP.NET中JSON的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...
- ASP.NET 中JSON 的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- ASP.NET中JSON的序列化和反序列化(转)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- [转]ASP.NET中JSON的序列化和反序列化
本文转自:http://www.cnblogs.com/zhaozhan/archive/2011/01/09/1931340.html JSON是专门为浏览器中的网页上运行的JavaScript代码 ...
- Asp.net中Json的序列化和反序列化(二)
三.JSON序列化和反序列化日期时间的处理 JSON格式不直接支持日期和时间.DateTime值值显示为“/Date(700000+0500)/”形式的JSON字符串,其中第一个数字(在提供的示例中 ...
- ASP.NET MVC Json的序列化和反序列化
1.利用js进行序列化成字符串和反序列化 var personObj = {name:"Tom",age:16}; // 利用JS序列化成字符串 var personStr = J ...
- .NET中JSON的序列化和反序列化的几种方式
一.什么是JSON JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集 ...
- golang中json包序列化与反序列化
package main import ( "encoding/json" "fmt" "reflect" ) type Info stru ...
随机推荐
- 杂文:AlphaGo 与 Alan Turing
写于2016 3.8晚 AlphaGo 与 Alan Turing 如果我们可以被称为生物版本的机器人,承载着在上千年或是万年的时间内不断完善的人工智能,并正如行为主义所指出的那样,对不同的刺激做出相 ...
- git使用笔记(三)(图文说明) 图解提交更改内容的不同方式,涉及代码
此步之前的工作和示例请参考以下帖子: git使用笔记(一)Git的下载与配置 git使用笔记(二) 如何把GitHub上项目同步到本地 -------------------------------- ...
- 分享一个js生成二维码的库
二维码用js生成会比用服务器生成方便很多,只要把window.location.href的值传入,即可生成对应的二维码..最主要是,这个库可以兼容ie6~ie9哦... 具体使用,请看官网:http: ...
- C 语言 输入字符串 并计算输入的字符的长度
int main(void) { char a[50];int i=0;char *j;gets(a);//输入字符串j=a;while(*j!='\0'){j++;//指针指向下一个数组字符i++; ...
- ubuntu 下GIT的安装
linux下软件的安装方式有多种,最简单的莫过于从软件中心直接安装了或者用命令行直接安装 sudo apt-get install git 但是这样的安装却使我们体会不到最新版本的功能,如果我们想要体 ...
- hdu Number Sequence
这道题是寻找规律.别的方法一般都是超时. #include <cstdio> #include <cstring> #include <algorithm> usi ...
- Codeforces 163A Substring and Subsequence
http://codeforces.com/problemset/problem/163/A?mobile=true 题目大意:给出两个串,问a的连续子串和b的子串(可以不连续)相同的个数. 思路:在 ...
- #ifdef __cplusplus extern "C" {代码} 倒底是什么意思?
时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern "C" { #endif //一段代码 #ifdef __cplusplus } # ...
- 自制单片机之十五……可串行驱动LCD12864的应用
在网上搜了一下,ST7920控制器的LCD产品可以提供8位,4位并行和串行接口可选,并行的控制接口的LCD较多,前面的贴子也介绍过,我们在这儿不说了,这儿我们讲的是串口控制LCD12864. 买了块S ...
- Android开发多线程断点续传下载器
使用多线程断点续传下载器在下载的时候多个线程并发可以占用服务器端更多资源,从而加快下载速度,在下载过程中记录每个线程已拷贝数据的数量,如果下载中断,比如无信号断线.电量不足等情况下,这就需要使用到断点 ...