调用方法:

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. 如何在 IDEA 中使用Maven 及 相应插件

    1,Maven 面板 Root ,相当于 VS 中的 sln ? ,大概可以这样理解吧. clean  --> install  这样操作, 所有的项目都会被执行. 手工操作有点麻烦.换另一种方 ...

  2. Ubuntu14.04用apt在线/离线安装CDH5.1.2[Apache Hadoop 2.3.0]-old

    用markdown重写,请稳步这里http://www.cnblogs.com/lion.net/p/5477899.html

  3. SQLSERVER 删除用户15434错误

    sysprocesses 表中保存关于运行在 Microsoft® SQL Server™ 上的进程的信息.这些进程可以是客户端进程或系统进程.sysprocesses 只存储在 master 数据库 ...

  4. DELPHI 各版本下载

    各版本中国下载地址: http://pan.baidu.com/s/1eQ1QGy2 http://pan.baidu.com/s/1qWK3mw8 (有新版本发布时,会同步最新官网地址) ───── ...

  5. C#:生成短网址

    /// <summary> /// 短网址应用 ,例如QQ微博的url.cn http://url.cn/2hytQx /// </summary> /// <param ...

  6. Linux流量监控工具

    http://www.vpser.net/manage/iftop.html 在类Unix系统中可以使用top查看系统资源.进程.内存占用等信息.查看网络状态可以使用netstat.nmap等工具.若 ...

  7. 黄聪:远程序桌面登录的.NET(C#)开发

    MSTSCLib.dll和MsTscAxWrapper.dll下载:LibDll.rar 远程序桌面登录的.NET开发,可以使用MSTSCLib.dll和MsTscAxWrapper.dll两个转换过 ...

  8. bug_ _

    java.lang.SecurityException: Not allowed to bind to service I app中加了百度定位功能,大部分手机测试没问题,但有部分手机会定位失败,提示 ...

  9. Integration Services创建ETL包

    http://www.cnblogs.com/chiniao/archive/2009/12/23/1630595.html  (转载) Microsoft Integration Services ...

  10. CentOS下Apache配置多域名或者多端口映射

    CentOS下Apache默认网站根目录为/var/www/html,假如我默认存了一个CI项目在html文件夹里,同时服务器的外网IP为ExampleIp,因为使用的是MVC框架,Apache需开启 ...