废话不多说,直接上干货!
首先,需要在项目中引用 Newtonsoft.Json 库,
选中你在开发的项目,右键(如下图,VS2017 IDE)
搜索 Json ,
安装 Newtonsoft.Json 库 即可。
下面是一个 Json 的工具类代码:
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Common.Json
{
/// Json 工具类
///
public static class JsonTool
{
/// 设置 Json 序列化格式
///
/// 是否格式化 Json 字符串,默认 true
/// 是否忽略 null 值,默认 false
/// 日期格式化参数,默认 "yyyy-MM-dd HH:mm:ss"
///
public static JsonSerializerSettings SetJsonSerializerFormat(bool isFormatJson = true,
bool isIgnoreNull = false,
string DtmFormat = "yyyy-MM-dd HH:mm:ss")
{
JsonSerializerSettings jss = new JsonSerializerSettings();
IList jcList = new List();
//日期时间格式化处理
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter();
timeConverter.DateTimeFormat = DtmFormat; //日期时间格式化处理
jcList.Add(timeConverter);
jss.Converters = jcList;
if (isFormatJson)
{
jss.Formatting = Newtonsoft.Json.Formatting.Indented; //格式化Json字符串
}
if (isIgnoreNull)
{
jss.NullValueHandling = NullValueHandling.Ignore; //忽略null值
}
return jss;
}
/// object 对象转换为 Json 字符串
///
/// 可序列化对象
///
public static string ObjectToJson(object obj)
{
string json = null;
if (obj == null)
{
return string.Empty;
}
try
{
json = JsonConvert.SerializeObject(obj, SetJsonSerializerFormat());
}
catch (Exception ex)
{
return string.Empty;
}
return json;
}
/// Json 格式的字符串转换为 T 对象
///
/// 泛型 类型
/// json 格式的字符串
///
public static T JsonToObject(string json)
{
T t_object = default(T);
if (string.IsNullOrWhiteSpace(json))
{
return default(T);
}
try
{
t_object = JsonConvert.DeserializeObject(json);
}
catch (Exception ex)
{
return default(T);
}
return t_object;
}
/// Json 格式的字符串转换为 object 对象
///
/// json 格式的字符串
///
public static object JsonToObject(string json)
{
object obj = null;
if (string.IsNullOrWhiteSpace(json))
{
return null;
}
try
{
obj = JsonConvert.DeserializeObject(json);
}
catch (Exception ex)
{
return null;
}
return obj;
}
/// Json 格式的字符串转换为 dynamic 匿名对象
///
/// json 格式的字符串
///
public static dynamic JsonToDynamic(string json)
{
if (string.IsNullOrWhiteSpace(json))
{
return null;
}
//创建匿名对象
dynamic dyData = default(dynamic);
try
{
dyData = JsonConvert.DeserializeObject(json);
}
catch (Exception ex)
{
dyData = null;
}
return dyData;
}
/// 读取 Json 内容的文件,并转化为 object 对象
///
/// Json 文件的绝对路径
/// 字符编码,默认 UTF-8
///
public static object JsonFileToObject(string path, Encoding encoding = null)
{
if (!File.Exists(path))
{
return null;
}
object obj = null;
if (encoding == null)
{
encoding = Encoding.UTF8;
}
try
{
string jsonStr = null;
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (StreamReader sr = new StreamReader(fs, encoding))
{
jsonStr = sr.ReadToEnd();
}
}
if (string.IsNullOrWhiteSpace(jsonStr))
{
obj = null;
}
else
{
obj = JsonToObject(jsonStr);
}
}
catch (Exception ex)
{
obj = null;
}
return obj;
}
/// 读取 Json 内容的文件,并转化为 T 对象
///
/// 泛型 类型
/// Json 文件的绝对路径
/// 字符编码,默认 UTF-8
///
public static T JsonFileToObject(string path, Encoding encoding = null)
{
T t_obj = default(T);
if (!File.Exists(path))
{
return default(T);
}
if (encoding == null)
{
encoding = Encoding.UTF8;
}
try
{
string jsonStr = null;
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (StreamReader sr = new StreamReader(fs, encoding))
{
jsonStr = sr.ReadToEnd();
}
}
if (string.IsNullOrWhiteSpace(jsonStr))
{
t_obj = default(T);
}
else
{
t_obj = JsonToObject(jsonStr);
}
}
catch (Exception ex)
{
t_obj = default(T);
}
return t_obj;
}
/// object 对象转换为 Json 内容的文件
///
/// object
/// Json 文件的绝对路径(建议文件格式用 .json 后缀)
/// 字符编码,默认 UTF-8
///
public static bool ObjectToJsonFile(object obj, string path, Encoding encoding = null)
{
if (obj == null || string.IsNullOrWhiteSpace(path))
{
return false;
}
bool isFinish = false;
string jsonStr = ObjectToJson(obj);
if (string.IsNullOrWhiteSpace(jsonStr))
{
isFinish = false;
}
else
{
if (encoding == null)
{
encoding = Encoding.UTF8;
}
try
{
if (!Directory.Exists(Path.GetDirectoryName(path)))
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
}
using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs, encoding))
{
sw.Write(jsonStr);
}
}
isFinish = true;
}
catch (Exception ex)
{
isFinish = false;
}
}
return isFinish;
}
}
}
希望给你带来帮助!