首页 技术 正文
技术 2022年11月14日
0 收藏 559 点赞 2,236 浏览 2165 个字
/// <summary>
/// Json工具类
/// </summary>
public class JsonUtility
{
private static JsonUtility _instance = new JsonUtility(); /// <summary>
/// 单例
/// </summary>
public static JsonUtility Instance
{
get { return _instance; }
set { _instance = value; }
} /// <summary>
/// Json转对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public T JsonToObject<T>(string json)
{
var ser = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
var jsonObject = (T)ser.ReadObject(ms);
ms.Close();
return jsonObject;
} /// <summary>
/// Json转对象列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public IList<T> JsonToObjectList<T>(string json)
{
json = json.Replace("}]}", "");
var startIndex = json.IndexOf(":[{") + 3;
var newJson = json.Substring(startIndex);
var regex = new Regex("},{");
var jsons = regex.Split(newJson); if (newJson.Contains("\":[]}"))
{
throw new Exception("快件单号没有找到");
}
var list = new List<T>(); foreach (var item in jsons)
{
var temp = "{" + item + "}";
list.Add(JsonToObject<T>(temp));
}
return list;
} /// <summary>
/// 对象转Json
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public string ObjectToJson(object obj)
{
var serializer = new DataContractJsonSerializer(obj.GetType());
using (var ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
var sb = new StringBuilder();
sb.Append(Encoding.UTF8.GetString(ms.ToArray()));
return sb.ToString();
}
} /// <summary>
/// 对象列表转Json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="objectList"></param>
/// <returns></returns>
public string ObjectListToJson<T>(IList<T> objectList)
{
return ObjectListToJson(objectList, "");
} /// <summary>
/// 对象列表转Json
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="objectList"></param>
/// <param name="className"></param>
/// <returns></returns>
public string ObjectListToJson<T>(IList<T> objectList, string className)
{
var sbResult = new StringBuilder();
sbResult.Append("{");
className = string.IsNullOrEmpty(className) ? objectList[0].GetType().Name : className;
sbResult.Append("\"" + className + "\":["); for (var i = 0; i < objectList.Count; i++)
{
var item = objectList[i];
if (i > 0)
{
sbResult.Append(",");
}
sbResult.Append(ObjectToJson(item));
} sbResult.Append("]}");
return sbResult.ToString();
}
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295