c#3.0关于JSON简单操作的实用帮助类(泛型实现)
关于json的操作,网上一搜一大把。避免重复造轮子,整理发布一个笔者在项目开发中经常用到的一个json实用帮助类,泛型实现,非常方便。不废话了,贴代码:
1、json操作的帮助类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Web.Script.Serialization;
namespace DotNet.Common.Util
{
/// <summary>
/// Json操作帮助类
/// </summary>
public static class JsonHelper
{
#region DataContractJsonSerializer
/// <summary>
/// 对象转换成json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonObject">需要格式化的对象</param>
/// <returns>Json字符串</returns>
public static string DataContractJsonSerialize<T>(T jsonObject)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
string json = null;
using (MemoryStream ms = new MemoryStream()) //定义一个stream用来存发序列化之后的内容
{
serializer.WriteObject(ms, jsonObject);
json = Encoding.UTF8.GetString(ms.GetBuffer()); //将stream读取成一个字符串形式的数据,并且返回
ms.Close();
}
return json;
}
/// <summary>
/// json字符串转换成对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json">要转换成对象的json字符串</param>
/// <returns></returns>
public static T DataContractJsonDeserialize<T>(string json)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
T obj = default(T);
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
obj = (T)serializer.ReadObject(ms);
ms.Close();
}
return obj;
}
#endregion
#region JavaScriptSerializer ms这里的两个方法已经out了
//“System.Web.Script.Serialization.JavaScriptSerializer.JavaScriptSerializer()”已过时:
//“The recommended alternative is System.Runtime.Serialization.DataContractJsonSerializer.”
/// <summary>
/// 对象转换成json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="jsonObject"></param>
/// <returns></returns>
public static string JavaScriptSerialize<T>(T jsonObject)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
StringBuilder sb = new StringBuilder();
serializer.Serialize(jsonObject, sb);
return sb.ToString();
}
/// <summary>
/// json字符串转换成对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T JavaScriptDeserialize<T>(string json)
{
var result = new JavaScriptSerializer().Deserialize<T>(json);
return (T)result;
}
#endregion
}
}
ps:需要添加System.ServiceModel.Web和System.Runtime.Serialization两个引用。
ps1:对时间、DataTable等特殊类型没有单独列出处理。
2、在页面中的调用方式如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
namespace WebTest
{
using DotNet.Common.WebForm;
using DotNet.Common.Model;
using EntCor.Hrm.Model;
using DotNet.Common.Util;
public partial class JsonTest : BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Company company = new Company { ID = 123456789, CompanyName = "test" };
List<Employee> listEmployees = new List<Employee>();
Employee employee = new Employee { ID = 1, UserName = "jeff wong", Password = "123456", Address = "北京", Birthday = DateTime.Now.AddYears(-25), IsLeave = false, RealName = "测试用户", State = "2" };
listEmployees.Add(employee);
employee = new Employee { ID = 2, UserName = "jeffery zhao", Password = "654321", Address = "上海", Birthday = DateTime.Now.AddYears(-25), IsLeave = false, RealName = "测试用户2", State = "2" };
listEmployees.Add(employee);
company.Employees = listEmployees;
//对象序列化为json
string jsonStr = DotNet.Common.Util.JsonHelper.DataContractJsonSerialize<Company>(company);//等价于过时的 string jsonStr = DotNet.Common.Util.JsonHelper.JavaScriptSerialize<Company>(company);
this.ltrContext.Text = jsonStr;
//json字符串反序列化为对象
Company jsonCompany = DotNet.Common.Util.JsonHelper.DataContractJsonDeserialize<Company>(jsonStr);
Company jsonJsCompany = DotNet.Common.Util.JsonHelper.JavaScriptDeserialize<Company>(jsonStr); //过时了
Response.Write("公司id:"+jsonCompany.ID);
Response.Write("<br/><br/>公司id:" + jsonJsCompany.ID);
}
}
}
}
ps:Company和Employee分别对应公司类和员工类。
关于json的其他学习资源,推荐JSON In Code 和JSON
demo下载地址:demo
转载于:https://www.cnblogs.com/jeffwongishandsome/archive/2009/10/14/1543917.html
c#3.0关于JSON简单操作的实用帮助类(泛型实现)相关推荐
- C++调用JsonCpp库,json简单操作以及常用函数
本文章记录作者对json操作的一点心得. 目录 准备 项目配置 代码 json格式说明 运用 初始化 调用时碰到的错误 准备 本文选择第三方库JsonCpp来解析json 下载地址:https://s ...
- 用Python做一个人脸识别系统,简单操作又实用~
导语 今天给大家介绍一个非常简洁的人脸识别系统: 人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术.而通过我们Python编程,几行代码就可以实现人脸识别,这主要得益于face_reco ...
- php如何操作mysql数据库代码_php如何操作mysql数据库的类(附代码)
这篇文章主要介绍了php简单操作mysql数据库的类,涉及php操作mysql的连接.查询.插入.删除等基本操作方法,非常具有实用价值,需要的朋友可以参考下.<?php /** * Databa ...
- 碉堡!Mysql8.0竟然可以直接操作json文档了。。。
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 经过漫长的测试, ...
- 碉堡!Mysql8.0竟然可以直接操作json文档了
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 4.5 分钟. 作者:旺财不哭 来源:https://www.jianshu.com/p/d4b012769a3b 经过漫长的 ...
- moloch1.8.0简单操作手册
moloch1.8.0简单操作手册 Sessions 页面:Sessions主要通过非常简单的查询语言来构建表达式追溯数据流量,以便分析. SPIView 页面: SPIGraph页面:SPIGrap ...
- spark sql的简单操作
测试数据 sparkStu.text zhangxs 24 chenxy wangYr 21 teacher wangx 26 teacher sparksql { "name": ...
- MongoDB的简单操作
MongoDB的简单操作 ( mac系统下mongDB的图形管理工具为:mongoHub ) ( windows系统下mongDB的图形管理工具为:mongoVUE ) 1.mongoDB通过终端创建 ...
- .NET Core 3.0 新 JSON API - JsonSerializer
JsonSerializer 前面几节的内容可能稍微有点底层,我们大部分时候可能只需要对C#的类进行串行化或者将JSON数据反串行化成C#类,在.NET Core 3.0里面,我们可以使用JsonS ...
最新文章
- c语言combine函数,combine
- matlab 文件路径问题
- 第五届[2013年]全国大学生数学竞赛[数学类]试题六参考解答
- hibernate的映射之二(一对多双向关联)
- imgkit分辨率_pythonhtml2image: imgkit 和 wkhtmltoimage的坑
- slf4j + log4j2配置日志引擎
- chrome postman插件_接口测试工具之Postman(原创)
- C语言switch如何退出,C语言萌新,想问问如何让下面那个switch函数输出的结果继续...
- iPad 读不到 USB,在 Mac 上如何进行 USB 格式化?
- 未解决:火狐浏览器提示不安全的链接
- 现代地图和古代地图下载收集
- 深度学习Hello World --- 手写体识别 实战
- Github 汉化插件教程
- 推进交通安全文化建设,首先要建立科学的理念
- 华为鸿蒙亮利剑,华为P50pro亮利剑,鸿蒙OS+徕卡五摄+5400mAh,这才是华为
- 短线上岸西安电子科技大学考研811信号与电路分析经验分享
- Windows下使用windeployqt打包QML项目(双击运行无反应)
- Python 生成图片验证码(详解)
- 《Uncertainty-aware Joint Salient Object and Camouflaged Object Detection》—CVPR2021—SOD+COD
- EOS合约账户名称及作用