C#对象转Json对象的方案

简单,是因为只有一个类

轻量,是因为整个类代码只有300行

灵活,是因为扩展方式只需 要继承重写某个方法即可

首先我将这个类称之为JsonBuilder,我希望它以StringBuilder的方式 来实现Json字符串的转换

public class JsonBuilder
{
    protected StringBuilder Buff = new StringBuilder(4096);//字符缓冲区
    public string ToJsonString(object obj)
    {
        .......
        return Buff.ToString();
    }
    .......
}

然后我为希望为每一个基础类型单独完成一个方法,并且方法可以被重写

protected 

virtual void AppendByte(Byte value)
protected virtual void AppendDecimal(Decimal value)
protected virtual void AppendInt16(Int16 value)
protected virtual void AppendInt32(Int32 value)
protected virtual void AppendInt64(Int64 value)
protected virtual void AppendSByte(SByte value)
protected virtual void AppendUInt16(UInt16 value)
protected virtual void AppendUInt32(UInt32 value)
protected virtual void AppendUInt64(UInt64 value)
protected virtual void AppendBoolean(Boolean value)
protected virtual void AppendChar(Char value)
protected virtual void AppendString(String value)
protected virtual void AppendDateTime(DateTime value)
protected virtual void AppendGuid(Guid value)
protected virtual void AppendDouble(Double value)
protected virtual void AppendSingle(Single value)
protected virtual void AppendEnum(Enum value)

为了使子类重写时更方便,我将数字类型合 并为一个

protected virtual void AppendNumber(IConvertible number)

但仍然保 留原有方法,只是原有方法直接调用AppendNumber,就像这样

protected virtual void 

AppendByte(Byte value) { AppendNumber(value); }
protected virtual void AppendDecimal(Decimal value) { AppendNumber(value); }
protected virtual void AppendInt16(Int16 value) { AppendNumber(value); }
protected virtual void AppendInt32(Int32 value) { AppendNumber(value); }
protected virtual void AppendInt64(Int64 value) { AppendNumber(value); }
protected virtual void AppendSByte(SByte value) { AppendNumber(value); }
protected virtual void AppendUInt16(UInt16 value) { AppendNumber(value); }
protected virtual void AppendUInt32(UInt32 value) { AppendNumber(value); }
protected virtual void AppendUInt64(UInt64 value) { AppendNumber(value); }
protected virtual void AppendDouble(Double value) { AppendNumber(value); }
protected virtual void AppendSingle(Single value) { AppendNumber(value); }

这样的好 处是我可以在子类中灵活的选择重写全部的数字类型,还是只重写某种特定类型

然后接着,我需要 完成一些已知类型的转换方法,比如数组,集合,字典,数据表等等

protected virtual void 

AppendArray(IEnumerable array)//数组,集合
protected virtual void AppendJson(IDictionary dict)//字典
protected virtual void AppendDataSet(DataSet dataset)//数据表集
protected virtual void AppendDataTable(DataTable table)//单表
protected virtual void AppendDataView(DataView view)//表视图

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索方法
, 类型
, void*
, virtual
, value
, protected
, virtual c# 
, 在Virtual
, datatable转换为json
, void
, json字符串转字典
, 集合转字符串
, table转Json
转Int类型
c站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-09-19 08:16:38

C#对象转Json对象的方案的相关文章

js对象和json对象互相转换的问题

  我们在进行系统开发时,特别是在用到ajax技术开发时经常会遇到JS对象和JSON格式数据的相互转换d的问题.其实,也就是两个问题:JS对象转换成为JSON格式数据.JSON格式数据转换成为JS对象 目前的项目数据交互几乎都用JQuery,所以处理流程是:前端页面数据->JS对象->jQuery提交->python处理,另外一种就是倒过来.python肯定不能直接处理JS对象数据,所以要把JS对象转换成为python能处理的一种数据格式(通常是字典dict),同样,python取数据反

使用GSON库转换Java对象为JSON对象的进阶实例详解_java

对List和map等结构的常用转换操作基本上可以满足我们处理的绝大多数需求,但有时项目中对json有特殊的格式规定.比如下面的json串解析: [{"tableName":"students","tableData":[{"id":1,"name":"李坤","birthDay":"Jun 22, 2012 9:54:49 PM"},{"

XmlToJson-xml对象转换为Json对象类

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Collections; namespace Framework { /// <summary> /// 将xml转换为json /// </summary> public class XmlToJson { /// <summary> /

在Javascript操作JSON对象,增加 删除 修改的简单实现_javascript技巧

在Javascript操作JSON对象,增加删除修改全有的,详情见代码 <script type="text/javascript"> var jsonObj2 = { teacher: [ { name: "jordan", sex: "m", age: "40" }, { name: "bryant", sex: "m", age: "28" }, {

JS对象与json字符串格式转换实例_javascript技巧

本文实例讲述了JS对象与json字符串格式转换的实现方法,分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <head>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     <title></title>     <script type="text/javascript"&g

JS遍历类、json对象属性、值,方便统一赋值

JS遍历类.json对象属性.值, 我们在页面,经常会接收后面或json返回的数据,要一个一个赋值,遍历json属性,可以方便给界面的控件赋值. 代码: 遍历js类 <script type="text/javascript"> //定义一个普通的js类,包含方法 var p= function (){ this.Id= 1; this.Name= 'test1'; } var pp= new p(); for(var item in pp){ if(typeof(pp[i

java中实体类和JSON对象之间相互转化_java

在需要用到JSON对象封装数据的时候,往往会写很多代码,也有很多复制粘贴,为了用POJO的思想我们可以装JSON转化为实体对象进行操作 package myUtil; import java.io.IOException; import myProject.Student; import myProject.StudentList; import org.codehaus.jackson.map.ObjectMapper; import org.json.JSONArray; import or

JSON字符串转JSON对象_javascript技巧

适用酒店O2O菜单 var stri = [ //会员中心 { "menucode": 1, "menuname": "会员中心", }, { "menucode": 1, "name": "会员查询", "perm_id": 1, SubsMenu: [{ "perm_id": 1, "menueurl": "Cus

js 动态生成json对象、时时更新json对象的方法_javascript技巧

函数不需要 return,因为 json 对象会被函数直接修改. var str1 = {"name": "apple", "sex": "21"}; // 参数:prop = 属性,val = 值 function createJson(prop, val) { // 如果 val 被忽略 if(typeof val === "undefined") { // 删除属性 delete str1[prop]