asp.net的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

{
//对应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();
}
}

.NET通用JSON解析/构建类的实现(c#)
在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加上JSON序列化特性。本文将试图提供一个高度灵活的JSON通用类型(JsonObject),实现对JSON的解析及序列化。
假设JSON对象内容如下:
{
orders: {
date: '21:31:59',
name: 'Xfrog',
books: [{
name: 'C# 网络核心编程',
publish: '2010-3-24'
}, {
name: 'C#入门经典中文版',
publish: '2009-10-16'
}]
},
blog: 'http://www.cnblogs.com/xfrog'
}
使用JsonObject来构建,可选择以下三种方式:
方式一:
//通过标准构造函数
JsonObject json = new JsonObject();
json["orders"] = new JsonProperty(new JsonObject());
json["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog");
JsonObject config = json.Properties<<SPAN style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; COLOR: #2b91af; PADDING-TOP: 0px">JsonObject>("orders");
json["orders"]["date"] = new JsonProperty(DateTime.Now.ToLongTimeString());
json["orders"]["name"] = new JsonProperty("Xfrog");
json["orders"]["books"] = new JsonProperty();
JsonProperty book = json["orders"]["books"].Add(new JsonObject());
book["name"] = new JsonProperty("C# 网络核心编程");
book["publish"] = new JsonProperty("2010-3-24");
book = json["orders"]["books"].Add(new JsonObject());
book["name"] = new JsonProperty("C#入门经典中文版");
book["publish"] = new JsonProperty("2009-10-16");
方式二:
//通过回调函数简化对象的构建
JsonObject json2 = new JsonObject((a) =>
{
a["orders"] = new JsonProperty(new JsonObject((b) =>
{
b["date"] = new JsonProperty(DateTime.Now.ToLongTimeString());
b["name"] = new JsonProperty("Xfrog");
b["books"] = new JsonProperty();
b["books"].Add(new JsonObject((c) =>
{
c["name"] = new JsonProperty("C# 网络核心编程");
c["publish"] = new JsonProperty("2010-3-24");
}));
b["books"].Add(new JsonObject((c) =>
{
c["name"] = new JsonProperty("C#入门经典中文版");
c["publish"] = new JsonProperty("2009-10-16");
}));
}));
a["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog");
});
方式三:
//通过字符串构建Json对象
JsonObject newObj = new JsonObject(jsonStr);
获取Json对象属性值的方法,也有三种方式:
//通过泛型函数
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);
//通过属性类型对应的属性
Console.WriteLine(newObj["orders"].Object["books"].Items[1].Object["name"].Value);
//如果属性为对象类型,可通过字符串索引简化
Console.WriteLine(newObj["orders"]["books"][1]["name"].Value);
直接使用ToString函数,将JsonObject转换为Json字符串:
String jsonStr = json.ToString();
注意:
我在重载ToString函数时,并没有将字符串转换为JavsScript字符串类型(即对需要转义的字符的处理),当然,要实现也是极其简单的。另外,对于带String参数的ToString,我也为做特殊处理,感兴趣的朋友可自行实现。
凡事以大气象去面对,优秀是一种习惯。
asp.net的JSONHelper 类的更多相关文章
- ASP.NET导出EXCEL类
最新ASP.NET导出EXCEL类 说明:可以导出ASP.NET页面和DATAGRID(WebControl)数据,可以导出表单头 using System;using System.Data;usi ...
- 扩展ASP.NET MVC HtmlHelper类
在这篇帖子中我会使用一个示例演示扩展ASP.NET MVC HtmlHelper类,让它们可以在你的MVC视图中工作.这个示例中我会提供一个简单的方案生成Html表格. HtmlHelper类 Htm ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)
lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...
- ASP.NET -- WebForm -- ScriptManager 类
ASP.NET -- WebForm -- ScriptManager 类 通过 ScriptManager 可注册随后将作为页面一部分呈现的脚本. 1. 注册并立即执行脚本. --RegisterS ...
- ASP.NET -- WebForm -- HttpRequest类的方法和属性
ASP.NET -- WebForm -- HttpRequest类的方法和属性 1. HttpRequest类的方法(1) BinaryRead: 执行对当前输入流进行指定字节数的二进制读取. ( ...
- ASP.NET -- WebForm -- HttpResponse 类的方法和属性
ASP.NET -- WebForm -- HttpResponse 类的方法和属性 1. HttpResponse 类的方法 (1) AddCacheDependency: 将一组缓存依赖项与响应关 ...
- .net Json JavaScriptSerializer JsonHelper类
结合.net 的JavaScriptSerializer 类实现Json数据处理 调用1: Model.Users m = BLL.UsersBLL.GetUserById(Convert.ToInt ...
- Asp.net的request类
ASP.NET获取客户端信息,暂时就这几个,有待添加~~ 1. 在ASP.NET中专用属性: 获取服务器电脑名:Page.Server.ManchineName 获取用户信息:Page.User 获取 ...
- ASP.Net:Table类的使用
在做Asp.Net的时候,很多情况下数据的绑定都是使用GridView或者我之前提到的ListView,但是这两个适合用于数据的绑定,而有些时候,数据需要在后台进行处理,例如数据据内地某一条数据的特殊 ...
随机推荐
- openjudge-最好的草
http://noi.openjudge.cn/ch0108/17/ 总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 65536kB 描述 奶牛Bessie计划好好 ...
- ETL利器Kettle实战应用解析系列三 【ETL后台进程执行配置方式】
本文主要阅读目录如下: 1.简介Kettle的Kitchen和Span 2.命令行调度任务配置方式 3.后台进程配置运行方式 4.Windows任务设置 5.Demo下载 1.简介Kettle的Kit ...
- mfc打开程序
void CMy3MFCDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 HINSTANCE hRslt = ShellExecute(NULL, ...
- stl::map之const函数访问
如何在const成员数中访问stl::map呢?例如如下代码: string ConfigFileManager::MapQueryItem(const string& name) const ...
- Python与PHP通过XMLRPC进行通信
Python与PHP通过XMLRPC进行通信:服务器端用Python,客户端用PHP. 服务器端:xmlrpc_server.py #!/usr/bin/python # coding: UTF-8 ...
- PHPWord
PHPWord中文乱码 我在 使用PHPWord$section->addText(),输出中文是遇到乱码,PHPWord 中文乱码解决如下: 第一步:打开phpword/Section.php ...
- 现代DOJO(翻译)
http://dojotoolkit.org/documentation/tutorials/1.10/modern_dojo/index.html 你可能已经不用doio一段时间了,或者你一直想保持 ...
- 微信开发-ACCESS TOKEN 过期失效解决方案
微信开发-ACCESS TOKEN 过期失效解决方案 起因:因为access_token的重要性,开发过微信的都知道,但是他有自己的生命周期,官方解释为:"有效期为7200秒",一 ...
- Elasticsearch mysql 增量同步 三表联合 脚本
在上一篇中简略的说了一下es同步数据脚本的大致情况,但是实际情况里肯定不会像上一篇里面的脚本那么简单.比如目前我就有三张表,两张实体表,一张关联表.大致实现如下: bin目录建立一个statefile ...
- mysql 查询数据时按照A-Z顺序排序返回结果集
mysql 查询数据时按照A-Z顺序排序返回结果集 $sql = "SELECT * , ELT( INTERVAL( CONV( HEX( left( name, 1 ) ) , 16, ...