Json实用工具 -JsonUtility

该文章介绍了一个C#编写的JsonUtility工具类,主要用于Json数据的序列化和反序列化,以及Json文件的读写操作。类中包含了将对象转换为Json字符串、从Json字符串还原对象的函数,同时还提供了Json文件的写入和读取功能,支持文件备份。代码适用于需要处理Json格式数据的场景。
摘要由CSDN通过智能技术生成

因为前一段时间在客户现场经常需要连接客户MesMes系统使用的数据格式又跟Json很像,后面想到做个Json格式储存文件的测试,于是就写了这个常用的工具类。

废话少说,上代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;

using System.ServiceModel;
using System.ServiceModel.Web;

using Newtonsoft.Json;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;

namespace ST8PTConvertTool
{
    public class JsonUtility
    {
        private static string jsonFolerPath = Environment.CurrentDirectory + "\\Set\\JsonData";  //储存参数设置文件
        private static string jsonFolerPathBackUp = jsonFolerPath + "\\JsonData_BK";  //储存参数设置文件

        public enum JsonFileName
        {
            Parameter,//程序所有设置参数JSON文件名称
        }

        /// <summary>
        /// 序列化Json
        /// </summary>
        /// <typeparam name="T">class</typeparam>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string JsonSerialize<T>(T t) where T : class
        {
            string serializeStr = JsonConvert.SerializeObject(t);

            return serializeStr;
        }//序列化

        /// <summary>
        /// 反序列化Json
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="serializeStr">class</param>
        /// <returns></returns>
        public static T JsonDeserialize<T>(string serializeStr) where T : class
        {
            T objData = default(T);
            try
            {
                if (serializeStr.Trim().Length != 0)
                {
                    using (MemoryStream memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(serializeStr)))
                    {

                        DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(T));
                        objData = (T)deseralizer.ReadObject(memoryStream);

                        return objData;
                    }
                }
            }
            catch (Exception ex)
            {


            }

            return objData;

        } //反序列化

        /// <summary>
        /// 写入Json文件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static bool WriteJsonFile<T>(T t, string fileName) where T : class
        {
            bool writeResult = false;
            string writeValue = string.Empty;

            try
            {
                if (!File.Exists(jsonFolerPath))
                {
                    Directory.CreateDirectory(jsonFolerPath);
                }//创建JSON文件夹

                if (!File.Exists(jsonFolerPathBackUp))
                {
                    Directory.CreateDirectory(jsonFolerPathBackUp);
                } //创建JSON备份文件夹

                bool isFileExisted = File.Exists(jsonFolerPath + "\\" + fileName + ".JSON");

                if (isFileExisted)
                {
                    string backupDateTime = DateTime.Now.ToString("yyyy-MM-dd HHmmss");

                    File.Move(jsonFolerPath + "\\" + fileName + ".JSON", jsonFolerPathBackUp + "\\" + fileName + "_" + backupDateTime + ".JSON");

                }//判断文件已经存在就移动到备份文件夹

                using (StreamWriter sw = File.CreateText(jsonFolerPath + "\\" + fileName + ".JSON"))
                {
                    writeValue = JsonSerialize(t);

                    sw.Write(writeValue);

                } //创建新的文件夹并写入参数数据

                writeResult = true;
            }
            catch (Exception ex)
            {
                writeResult = false;
                MessageBox.Show("读取Json配置档出错!\r\n错误代码:" + ex.ToString(), "信息提示");
            }

            return writeResult;

        } //写入Json文件

        /// <summary>
        /// 读取Json文件并反序列化
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="fileName">文件名</param>
        /// <returns></returns>
        public static T ReadJsonFile<T>(string fileName) where T : class
        {
            string getData = string.Empty;

            T data = default(T);
            string filePath = jsonFolerPath + "\\" + fileName + ".JSON";

            if (!File.Exists(filePath))
            {
                return data;
            }
            else
            {
                using (StreamReader sr = new StreamReader(filePath))
                {
                    getData = sr.ReadToEnd();

                    data = JsonDeserialize<T>(getData);
                }
            }

            return data;
        }//读取Json文件并反序列化

    }
}

可能需要引用几个DLL,Newtonsoft.Json、System.Runtime.Serialization、System.ServiceModel、System.ServiceModel.Web、

使用示例:

存储的文件位置与内容效果:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xieBug的攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值