调用方法:

JSONHelper json = new JSONHelper();

json.success = true;

json.AddItem("aid", "1");

json.ItemOk();

json.totlalCount=10;

string jsons = "";
if (json.totlalCount > 0)
{
    jsons = json.ToString();
}
else
{
    jsons = @"{success:false}";
}
return jsons;

JSONHelper.cs

public class JSONHelper
{
    //对应JSON的singleInfo成员
    public string singleInfo = string.Empty;

protected string _error = string.Empty;
    protected bool _success = true;
    protected long _totalCount = 0;
    protected System.Collections.ArrayList arrData = new ArrayList();
    protected System.Collections.ArrayList arrDataItem = new ArrayList();

public JSONHelper()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }

//对应于JSON的success成员
    public bool success
    {
        get
        {
            return _success;
        }
        set
        {
            //如设置为true则清空error
            if (success) _error = string.Empty;
            _success = value;
        }
    }

//对应于JSON的error成员
    public string error
    {
        get
        {
            return _error;
        }
        set
        {
            //如设置error,则自动设置success为false
            if (value != "") _success = false;
            _error = value;
        }
    }

public long totlalCount
    {
        get { return _totalCount; }
        set { _totalCount = value; }
    }

//重置,每次新生成一个json对象时必须执行该方法
    public void Reset()
    {
        _success = true;
        _error = string.Empty;
        singleInfo = string.Empty;
        arrData.Clear();
        arrDataItem.Clear();
    }

public void AddItem(string name, string value)
    {
        arrData.Add("/"" + name + "/":" + "/"" + value + "/"");
    }

public void ItemOk()
    {
        arrData.Add("
");
        //返回总记录条数
        totlalCount++;
    }

//序列化JSON对象,得到返回的JSON代码
    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("{");
        sb.Append("/"totalCount/":/"" + _totalCount.ToString() + "/",");
        sb.Append("/"success/":" + _success.ToString().ToLower() + ",");
        sb.Append("/"error/":/"" + _error.Replace("/"", "///"") + "/",");
        sb.Append("/"data/":[");

int index = 0;
        sb.Append("{");
        if (arrData.Count <= 0)
        {
            sb.Append("}");
        }
        else
        {
            foreach (string val in arrData)
            {
                index++;

if (val != "
")
                {
                    sb.Append(val + ",");
                }
                else
                {
                    sb = sb.Replace(",", "", sb.Length - 1, 1);
                    sb.Append("},");
                    if (index <</SPAN> arrData.Count)
                    {
                        sb.Append("{");
                    }
                }

}
            sb = sb.Replace(",", "", sb.Length - 1, 1);
            sb.Append("]");
        }

sb.Append("}");
        return sb.ToString();
    }

public string ToSingleString()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("{");

sb.Append("success:" + _success.ToString().ToLower() + ",");

sb.Append("data:");

int index = 0;
        sb.Append("{");
        if (arrData.Count <= 0)
        {
            sb.Append("}");
        }
        else
        {
            foreach (string val in arrData)
            {
                index++;

if (val != "
")
                {
                    sb.Append(val + ",");
                }
                else
                {
                    sb = sb.Replace(",", "", sb.Length - 1, 1);
                    sb.Append("},");
                    if (index <</SPAN> arrData.Count)
                    {
                        sb.Append("{");
                    }
                }

}
            sb = sb.Replace(",", "", sb.Length - 1, 1);
            sb.Append("");
        }

sb.Append("}");
        return sb.ToString();
    }
}

url:http://greatverve.cnblogs.com/archive/2011/07/06/asp-net-jsonhelper.html
.NET通用JSON解析/构建类的实现(c#)

在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加上JSON序列化特性。本文将试图提供一个高度灵活的JSON通用类型(JsonObject),实现对JSON的解析及序列化。

假设JSON对象内容如下:

 
  1. {
    
  2.  orders: {
    
  3.  date: '21:31:59',
    
  4.  name: 'Xfrog',
    
  5.  books: [{
    
  6.  name: 'C# 网络核心编程',
    
  7.  publish: '2010-3-24'
    
  8.  }, {
    
  9.  name: 'C#入门经典中文版',
    
  10.  publish: '2009-10-16'
    
  11.  }]
    
  12.     },
    
  13.  blog: 'http://www.cnblogs.com/xfrog'
    
  14. }
    

使用JsonObject来构建,可选择以下三种方式: 
方式一:

 
  1. //通过标准构造函数
    
  2. JsonObject json = new JsonObject();
    
  3. json["orders"] = new JsonProperty(new JsonObject());
    
  4. json["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog");
    
  5. JsonObject config = json.Properties<<SPAN style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #2b91af; PADDING-TOP: 0px">JsonObject>("orders");
    
  6. json["orders"]["date"] = new JsonProperty(DateTime.Now.ToLongTimeString());
    
  7. json["orders"]["name"] = new JsonProperty("Xfrog");
    
  8. json["orders"]["books"] = new JsonProperty();
    
  9. JsonProperty book = json["orders"]["books"].Add(new JsonObject());
    
  10. book["name"] = new JsonProperty("C# 网络核心编程");
    
  11. book["publish"] = new JsonProperty("2010-3-24");
    
  12. book = json["orders"]["books"].Add(new JsonObject());
    
  13. book["name"] = new JsonProperty("C#入门经典中文版");
    
  14. book["publish"] = new JsonProperty("2009-10-16");
    

方式二:

 
  1. //通过回调函数简化对象的构建
    
  2. JsonObject json2 = new JsonObject((a) =>
    
  3. {
    
  4.     a["orders"] = new JsonProperty(new JsonObject((b) =>
    
  5.     {
    
  6.         b["date"] = new JsonProperty(DateTime.Now.ToLongTimeString());
    
  7.         b["name"] = new JsonProperty("Xfrog");
    
  8.         b["books"] = new JsonProperty();
    
  9.         b["books"].Add(new JsonObject((c) =>
    
  10.         {
    
  11.             c["name"] = new JsonProperty("C# 网络核心编程");
    
  12.             c["publish"] = new JsonProperty("2010-3-24");
    
  13.         }));
    
  14.         b["books"].Add(new JsonObject((c) =>
    
  15.         {
    
  16.             c["name"] = new JsonProperty("C#入门经典中文版");
    
  17.             c["publish"] = new JsonProperty("2009-10-16");
    
  18.         }));
    
  19.     }));
    
  20.     a["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog");
    
  21. });
    

方式三:

 
  1. //通过字符串构建Json对象
    
  2. JsonObject newObj = new JsonObject(jsonStr);
    

获取Json对象属性值的方法,也有三种方式:

 
  1. //通过泛型函数
    
  2. Console.WriteLine(newObj["orders"].GetValue<<SPAN style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #2b91af; PADDING-TOP: 0px">JsonObject>()["books"].GetValue<<SPAN style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #2b91af; PADDING-TOP: 0px">List<<SPAN style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #2b91af; PADDING-TOP: 0px">JsonProperty>>()[1].GetValue<<SPAN style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #2b91af; PADDING-TOP: 0px">JsonObject>()["name"].Value);
    
  3. //通过属性类型对应的属性
    
  4. Console.WriteLine(newObj["orders"].Object["books"].Items[1].Object["name"].Value);
    
  5. //如果属性为对象类型,可通过字符串索引简化
    
  6. Console.WriteLine(newObj["orders"]["books"][1]["name"].Value);
    

直接使用ToString函数,将JsonObject转换为Json字符串:

 
  1. String jsonStr = json.ToString();
    

注意:

我在重载ToString函数时,并没有将字符串转换为JavsScript字符串类型(即对需要转义的字符的处理),当然,要实现也是极其简单的。另外,对于带String参数的ToString,我也为做特殊处理,感兴趣的朋友可自行实现。

凡事以大气象去面对,优秀是一种习惯。

asp.net的JSONHelper 类的更多相关文章

  1. ASP.NET导出EXCEL类

    最新ASP.NET导出EXCEL类 说明:可以导出ASP.NET页面和DATAGRID(WebControl)数据,可以导出表单头 using System;using System.Data;usi ...

  2. 扩展ASP.NET MVC HtmlHelper类

    在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...

  3. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  4. ASP.NET -- WebForm -- ScriptManager 类

    ASP.NET -- WebForm -- ScriptManager 类 通过 ScriptManager 可注册随后将作为页面一部分呈现的脚本. 1. 注册并立即执行脚本. --RegisterS ...

  5. ASP.NET -- WebForm -- HttpRequest类的方法和属性

    ASP.NET -- WebForm --  HttpRequest类的方法和属性 1. HttpRequest类的方法(1) BinaryRead: 执行对当前输入流进行指定字节数的二进制读取. ( ...

  6. ASP.NET -- WebForm -- HttpResponse 类的方法和属性

    ASP.NET -- WebForm -- HttpResponse 类的方法和属性 1. HttpResponse 类的方法 (1) AddCacheDependency: 将一组缓存依赖项与响应关 ...

  7. .net Json JavaScriptSerializer JsonHelper类

    结合.net 的JavaScriptSerializer 类实现Json数据处理 调用1: Model.Users m = BLL.UsersBLL.GetUserById(Convert.ToInt ...

  8. Asp.net的request类

    ASP.NET获取客户端信息,暂时就这几个,有待添加~~ 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取 ...

  9. ASP.Net:Table类的使用

    在做Asp.Net的时候,很多情况下数据的绑定都是使用GridView或者我之前提到的ListView,但是这两个适合用于数据的绑定,而有些时候,数据需要在后台进行处理,例如数据据内地某一条数据的特殊 ...

随机推荐

  1. MSSQL-实用小工具

    1.创建查询辅助表 create table nums (n int not null) alter table nums add constraint PK_NUMS primary key clu ...

  2. Eclipse中Sever启动成功,但tomcat无法管理页面无法访问。

  3. delphi locate多字段查询

    简单格式: IF MSQ_NewBillQuantity.Locate('FStockID;FMarchID', VarArrayOf([FStockID, FMarchID]), []) = Fal ...

  4. ext4 disable journal

    ext4 disable journal At one high loaded web project I needed a very fast file system. I decided to u ...

  5. Sublime Text 2/3安装使用及常用插件

    一.介绍 Sublime Text 是一款较新的编辑器,它轻量.简洁.高效,良好的扩展性以及跨平台等特性,使得越来越多的开发人员喜爱.它是一款收费的商业软件,但可以免费无限制无限期的试用,只会偶尔提醒 ...

  6. caffe:用自己的数据训练网络mnist

    画黑底白字的软件:KolourPaint. 假设所有"1"的图片放到名字为1的文件夹下.(0-9类似)..获取每个数字的名称文件后,手动表上标签.然后合成train.txt 1.获 ...

  7. oracle数据库如何创建表空间,临时表空间

    目标 1.创建表空间 lxy 2.创建临时表空间tmp_lxy create tablespace lxy datafile '/u01/app/oracle/oradata/LXY/lxy.dbf' ...

  8. 如何自定义Flask中的响应类

    http://codingpy.com/article/customizing-the-flask-response-class/

  9. IO操作

    /// <summary> /// 文件读写操作/// </summary> public partial class TestIO : DevComponents.DotNe ...

  10. [转载]Java程序员使用的20几个大数据工具

    最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言web框架应用服务器SQL数据访问工具SQL数据库大数据构建工具云提供商今天我们就要说说大数据 ...