一种将数据表DataTable转为JSON格式的新方法
来源:互联网 发布:大学专业解析知乎 编辑:程序博客网 时间:2024/05/29 12:42
最近实现一种将数据表转为JSON表示的新方法。
这种方法表示的JSON数据更省空间(尤其是网络传输,能省很多数据量),使用起来也很方便。
假设有这样一张数据表:
一般的JSON表示方法为:
- [
- {"ID":1,"Name":"周杰伦","Location":"香港"},
- {"ID":2,"Name":"侯佩岑","Location":"台湾"},
- {"ID":3,"Name":"张靓颖","Location":"大陆"}
- ]
可以看到,数据表的字段信息(column)在每条记录里都写了一遍,比较浪费空间。如果字段很多很长,甚至会比有效内容更多。随着记录数增加,浪费的数据量是很可观的。尤其像以前小百合BBS自己付流量费的时候,流量啊流量。。。。。。
我实现的表示方法产生的JSON格式是这样的:
- {
- "C":{"ID":0,"Name":1,"Location":2},
- "D":[
- [1,"周杰伦","香港"],
- [2,"侯佩岑","台湾"],
- [3,"张靓颖","大陆"]
- ]}
这种方法将字段信息单独提取到C属性里,而D属性是纯粹的记录数据。
其实D属性本身已经完全能表示记录内容,C属性只是为了使用时方便。
在这短短几个字段及几条数据的极端情况下,已经省下几十字节。
下面对比使用方法,我承认这种方法稍微比通用的方法复杂一点,但是带来的节省,个人认为还是值得的:
- 通用方法取周杰伦:[0].Name
- 我的方法取周杰伦:D[0][C.Name]
下面是上述DataTable转JSON的C#代码:
- usingSystem;
- using System.Text;
- using System.Web.Script.Serialization;
- /// <summary>
- /// 一种JSON表示DataTable的新方法
- /// <see href="http://bianbian.org/technology/javascript/361.html" />
- /// </summary>
- public staticclass JsonUtil
- {
- static JavaScriptSerializer_jss = newJavaScriptSerializer();
- /// <summary>
- /// DataTable 转换成 JSON string。
- /// </summary>
- /// <param name="dt">需要转换的DataTable</param>
- /// <returns>JSON结构字符串</returns>
- public staticstring FromDataTable(System.Data.DataTabledt)
- {
- StringBuilder sb =new StringBuilder(256);
- FormDataTable(dt,sb);
- return sb.ToString();
- }
- /// <summary>
- /// DataTable 转换成 JSON string。
- /// </summary>
- /// <param name="dt">需要转换的DataTable</param>
- /// <param name="sb">StringBuilder</param>
- public staticvoid FormDataTable(System.Data.DataTabledt, StringBuildersb)
- {
- sb.Append("{C:{");
- // -> {"ID":0, "Name":1}
- for (intj = 0;j < dt.Columns.Count;j++)
- {
- if (j >0)
- sb.Append(',');
- sb.Append('"').Append(dt.Columns[j].ColumnName).Append('"')
- .Append(':').Append(j);
- }
- sb.Append("},D:[");
- for (inti = 0;i < dt.Rows.Count;i++)
- {
- if (i >0)
- sb.Append(',');
- sb.Append('[');
- for (intj = 0;j < dt.Columns.Count;j++)
- {
- if (j >0)
- sb.Append(',');
- _jss.Serialize(dt.Rows[i][j],sb);
- }
- sb.Append(']');
- }
- sb.Append("]}");
- }
- }
遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道
- 一种将数据表DataTable转为JSON格式的新方法
- 将数据表DataTable转为压缩JSON格式
- 将datatable转为json
- 将json 转为DataTable
- JS转为json数据、.NET DataTable转化为json格式
- 将DataTable转换成Json格式串的方法
- C# 将DataTable转换成ExtJS可用的Json格式
- 将dataTable数据构造成Json格式的字符串
- 将DataTable转换成EasyUITree的json格式 ---四级树
- 利用gson将JSON格式转为Map
- 将DataTable序列化为Json格式
- 将DataReader转为DataTable
- 将DataReader 转为 DataTable
- 关于将带斜杠的json串转为正确的json格式
- JSON、JAVA互转与将页面中改变的数据转为json格式
- JSON格式转为JSON对象的方式
- VB中使用PNG格式图片的一种新方法
- VB中使用PNG格式图片的一种新方法
- 2011-7-29 15:12:24
- 存储方式与介质对性能的影响
- Linux-HA 入门指南(引用)
- Android:点亮屏幕,和取消点亮屏幕
- Oracle+9i&10g编程艺术:深入数据库体系结构读书笔记--------一、创建SCOTT/TIGGER数据库表
- 一种将数据表DataTable转为JSON格式的新方法
- 实例操作--windows上面的项目部署到--Ubuntu系统上
- tvtime
- Creditor的配置
- ABAP 去掉日期分割符
- API的问题
- UGC版中的一个速度只有几K的BUG分析
- qt 中的打印程序编写流程
- the vfpoledb provider is not registered on the local machine