ORM映射框架总结--终极JSON

简介: 1. 简单介绍一下JSON   JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript的一个子集。

1. 简单介绍一下JSON

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript的一个子集。 JSON采用完全独立于语言的文本格式。也正是因为这样,它能够在各种计算机语言中蓬勃发展。

  JSON 的结构:

  1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。

  2. 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

  

2.C# 实体对象转化为JSON

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
  1  /* *
  2   * 
  3   * 2009-5-26
  4   * 
  5   * 
  6   * 将某个对象转化为Json数据格式
  7   *  */
  8  using  System;
  9  using  System.Collections.Generic;
 10  using  System.Linq;
 11  using  System.Text;
 12  using  System.IO;
 13  using  System.Data;
 14  using  System.ServiceModel.Web;
 15  using  System.Runtime.Serialization;
 16  using  System.Runtime.Serialization.Json;
 17 
 18  namespace  CommonData.Json
 19  {
 20       public   class  ObjectSerialization
 21      {
 22           private   object  _entity;
 23 
 24           ///   <summary>
 25           ///  被序列化得实体对象
 26           ///   </summary>
 27           public   object  Entity
 28          {
 29               get  {  return  _entity; }
 30               set  { _entity  =  value; }
 31          }
 32 
 33           private   string  _jsonData;
 34 
 35           ///   <summary>
 36           ///  被转化为json格式数据的对象
 37           ///   </summary>
 38           public   string  JsonData
 39          {
 40               get  {  return  _jsonData; }
 41               set  { _jsonData  =  value; }
 42          }
 43 
 44           ///   <summary>
 45           ///  无参数构造方法
 46           ///   </summary>
 47           public  ObjectSerialization()
 48          { 
 49          }
 50 
 51           ///   <summary>
 52           ///  有参数构造方法
 53           ///   </summary>
 54           ///   <param name="entity"> 要被序列化得实体对象 </param>
 55           public  ObjectSerialization( object  entity)
 56          {
 57               this ._entity  =  entity;
 58          }
 59 
 60 
 61           ///   <summary>
 62           ///  序列化实体对象
 63           ///   </summary>
 64           ///   <returns></returns>
 65           public   string  EntityToJson()
 66          {
 67              var serializer  =   new  DataContractJsonSerializer(Entity.GetType());
 68              MemoryStream ms  =   new  MemoryStream();
 69              serializer.WriteObject(ms, Entity);
 70               byte [] myByte  =   new   byte [ms.Length];
 71              ms.Position  =   0 ;
 72              ms.Read(myByte,  0 , ( int )ms.Length);
 73               string  dataString  =  Encoding.UTF8.GetString(myByte);
 74               return  dataString;
 75          }
 76 
 77 
 78           ///   <summary>
 79           ///  序列化实体对象
 80           ///   </summary>
 81           ///   <param name="entity"> 要被序列化得实体对象 </param>
 82           ///   <returns></returns>
 83           public   string  EntityToJson( object  entity)
 84          {
 85               this ._entity  =  entity;
 86               return  EntityToJson();
 87          }
 88 
 89           ///   <summary>
 90           ///  将Json格式数据转换为对象
 91           ///   </summary>
 92           ///   <returns></returns>
 93           public  T GetObjectJson < T > ()
 94          {
 95              MemoryStream ms  =   new  MemoryStream(Encoding.UTF8.GetBytes(JsonData));
 96              var serializer  =   new  DataContractJsonSerializer( typeof (T));
 97              T t  =  (T)serializer.ReadObject(ms);
 98               return  t;
 99          }
100 
101           ///   <summary>
102           ///  将Json格式数据转换为对象
103           ///   </summary>
104           ///   <param name="jsonData"> json数据格式 </param>
105           ///   <returns></returns>
106           public  T GetObjectJson < T > ( string  jsonData)
107          {
108               this ._jsonData  =  jsonData;
109               return  GetObjectJson < T > ();
110          }
111      }
112  }
113 

 

  这个类提供了一个实体对象序列化和反序列化得操作。

  序列化操作

  public string EntityToJson()
        {
            var serializer = new DataContractJsonSerializer(Entity.GetType());
            MemoryStream ms = new MemoryStream();
            serializer.WriteObject(ms, Entity);
            byte[] myByte = new byte[ms.Length];
            ms.Position = 0;
            ms.Read(myByte, 0, (int)ms.Length);
            string dataString = Encoding.UTF8.GetString(myByte);
            return dataString;
        }

   这个方法用到了DataContractJsonSerializer 这个类,这个类是WCF中的一个序列化类,也就是说在.net 3.0 之前是没有的,这个类提供了比Serializable 更好更方便的序列化。我们呢正好赶上了这个大趋势,方便了,很快能够将实体对象序列化为json格式数据。.net 2.0 中操作都是利用反射然后拼接字符串。

   至于反序列也就是上面的相反操作了,但我们的字符串格式和实体对象能够匹配的时候,我们可以将一个字符串重新转化为一个实体对象。

 

(3). DataTable 序列化json

img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
  1  /* *
  2   * 
  3   * 2009-5-26
  4   * 
  5   * 
  6   * 将DataTable 转化为Json数据格式
  7   *  */
  8  using  System;
  9  using  System.Collections.Generic;
 10  using  System.Linq;
 11  using  System.Text;
 12  using  System.IO;
 13  using  System.Data;
 14  using  System.ServiceModel.Web;
 15  using  System.Runtime.Serialization;
 16  using  System.Runtime.Serialization.Json;
 17 
 18  namespace  CommonData.Json
 19  {
 20       public   class  DataTableJson
 21      {
 22           private  DataTable _jsonTable;
 23 
 24           ///   <summary>
 25           ///  DataTable属性
 26           ///   </summary>
 27           public  DataTable JsonTable
 28          {
 29               get
 30              {
 31                   return  _jsonTable;
 32              }
 33               set
 34              {
 35                  _jsonTable  =  value;
 36              }
 37          }
 38 
 39           ///   <summary>
 40           ///  无参构造方法
 41           ///   </summary>
 42           public  DataTableJson()
 43          {
 44          }
 45 
 46           ///   <summary>
 47           ///  有参构造方法
 48           ///   </summary>
 49           ///   <param name="table"> table对象 </param>
 50           public  DataTableJson(DataTable table)
 51          {
 52               this ._jsonTable  =  table;
 53          }
 54 
 55           ///   <summary>
 56           ///  将DataTable 转化为Json数据格式
 57           ///   </summary>
 58           ///   <returns></returns>
 59           public   string  ToJson()
 60          {
 61              StringBuilder JsonString  =   new  StringBuilder();
 62               if  (_jsonTable  !=   null   &&  _jsonTable.Rows.Count  >   0 )
 63              {
 64                  JsonString.Append( " " );
 65                  JsonString.Append( " \ " Head\ " :[  " );
 66                   for  ( int  i  =   0 ; i  <  _jsonTable.Rows.Count; i ++ )
 67                  {
 68                      JsonString.Append( " " );
 69                       for  ( int  j  =   0 ; j  <  _jsonTable.Columns.Count; j ++ )
 70                      {
 71                           if  (j  <  _jsonTable.Columns.Count  -   1 )
 72                          {
 73                              JsonString.Append( " \ ""  + _jsonTable.Columns[j].ColumnName.ToString() +  " \ " : "   +   " \ ""  + _jsonTable.Rows[i][j].ToString() +  " \ " , " );
 74                          }
 75                           else   if  (j  ==  _jsonTable.Columns.Count  -   1 )
 76                          {
 77                              JsonString.Append( " \ ""  + _jsonTable.Columns[j].ColumnName.ToString() +  " \ " : "   +   " \ ""  + _jsonTable.Rows[i][j].ToString() +  " \ "" );
 78                          }
 79                      }
 80 
 81                       if  (i  ==  _jsonTable.Rows.Count  -   1 )
 82                      {
 83                          JsonString.Append( " " );
 84                      }
 85                       else
 86                      {
 87                          JsonString.Append( " },  " );
 88                      }
 89                  }
 90                  JsonString.Append( " ]} " );
 91                   return  JsonString.ToString();
 92              }
 93               else
 94              {
 95                   return   null ;
 96              }
 97          }
 98 
 99           ///   <summary>
100           ///  将DataTable 转化为Json数据格式
101           ///   </summary>
102           ///   <param name="table"> table 对象 </param>
103           ///   <returns></returns>
104           public   string  ToJson(DataTable table)
105          {
106               this ._jsonTable  =  table;
107               return  ToJson();
108          }
109      }
110  }
111 

 

  上面是C# 中的DataTable 序列化为JSON ,虽然名为序列化,其实不是序列化,因为DataTable是不能个序列化的,

所以这里是采用的拼字符串。将表格中的每个属性和每个值都读取出来,拼成JSON 数据格式字符串。

相关文章
|
5月前
|
存储 JSON Android开发
大师学SwiftUI第17章Part2 - WebKit 框架和JSON等网页内容加载
对于某些应用,Safari视图控制器中包含的自定义选项还不够。为此Apple又提供WebKit框架这一选项。借助于这个框架,我们可以在视图内展示网页内容。该视图通过UIView类的子类WKWebView定义。这个类提供了如下管理内容的属性和方法。 •
50 0
|
5月前
|
JSON JavaScript API
Vue移动端框架Mint UI教程-调用模拟json数据(五)
Vue移动端框架Mint UI教程-调用模拟json数据(五)
42 0
|
7月前
|
XML JSON 前端开发
SAP UI5 框架的 manifest.json
SAP UI5 框架的 manifest.json
36 0
|
8月前
|
JSON Java fastjson
SpringBoot-24-默认Json框架jackson详解
SpringBoot-24-默认Json框架jackson详解
267 0
|
9月前
|
JSON 数据格式
layui框架实战案例(3):使用多层嵌套json格式数据的使用templet解决方案
layui框架实战案例(3):使用多层嵌套json格式数据的使用templet解决方案
195 0
|
9月前
|
JSON JavaScript PHP
layui框架实战案例(2):layui文件上传PHP后台参数获取方式及JSON返回格式
layui框架实战案例(2):layui文件上传PHP后台参数获取方式及JSON返回格式
318 0
|
11月前
|
JSON Java 数据格式
Java:MyBatis-Plus自动映射json字段
Java:MyBatis-Plus自动映射json字段
264 0
|
12月前
|
JSON 关系型数据库 MySQL
接口自动化 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)
接口自动化 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)
106 0
|
JSON NoSQL MongoDB
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
分布式服务器框架之Servers.Core库中实现MongoDB的ObjectId和Json转换
|
设计模式 JSON 前端开发
MVC框架模式技术实例(用到隐藏帧、json、仿Ajax、Dom4j、jstl、el等)(2)
MVC框架模式技术实例(用到隐藏帧、json、仿Ajax、Dom4j、jstl、el等)
120 0
MVC框架模式技术实例(用到隐藏帧、json、仿Ajax、Dom4j、jstl、el等)(2)