C#关于JSON的使用

2022-10-27 09:18:46

Json和实体对象的转换

注意:
(1)一般情况不使用加密,若要使用加密请进行验证以免出现错误;
(2)大量数据时尽量少用Json存储数据,Json适用于轻量级数据;
(3)使用Json时需要添加依赖包,并引进命名空间;

1.安装依赖包

从包管理器添加Json依赖包,
在这里插入图片描述

2.引用Json的DLL文件

在这里插入图片描述

在这里插入图片描述

3.Json实用工具类

/// <summary>/// JSON和类的序列化、反序列化/// </summary>publicclassJson{/// <summary>/// 序列化/// </summary>publicstaticstringSerializeClass<T>(T t,EnumEncrypt encry)whereT:class{returnEncrypt(JsonConvert.SerializeObject(t), encry);}/// <summary>/// 序列化/// </summary>publicstaticstringSerializeClass<T>(T t)whereT:class{returnEncrypt(JsonConvert.SerializeObject(t), EnumEncrypt.Default);}/// <summary>/// 反序列化/// </summary>/// <typeparam name="T"></typeparam>publicstaticTDeserializeClass<T>(string info,EnumEncrypt encry)whereT:class,new(){return JsonConvert.DeserializeObject<T>(Decrypt(info, encry))??newT();}/// <summary>/// 反序列化/// </summary>/// <typeparam name="T"></typeparam>publicstaticTDeserializeClass<T>(string info)whereT:class,new(){return JsonConvert.DeserializeObject<T>(Decrypt(info, EnumEncrypt.Default));}/// <summary>/// 加密/// </summary>/// <param name="str">要加密的字符串</param>/// <param name="encry">编码格式</param>/// <returns>加密后的字符串</returns>privatestaticstringEncrypt(string str,EnumEncrypt encry){try{byte[] bytes=null;switch(encry){case EnumEncrypt.GB2312:
                        bytes= Encoding.GetEncoding("GB2312").GetBytes(str);break;case EnumEncrypt.UTF8:
                        bytes= Encoding.UTF8.GetBytes(str);break;default:return str;}var builder=newStringBuilder();foreach(byte tin bytes){
                    builder.Append(Convert.ToString(t,16));//byte转化成十六进制string}string encrypt= builder.ToString();return encrypt;}catch{return str;}}/// <summary>/// 解密/// </summary>/// <param name="str">要解密的字符串</param>/// <param name="encry">解码格式</param>/// <returns>解密后的字符串</returns>privatestaticstringDecrypt(string str,EnumEncrypt encry){try{if(encry== EnumEncrypt.Default)return str;byte[] bytes=newbyte[str.Length/2];int index=0;for(int i=0; i< str.Length; i+=2){//两个字符代表一个字节
                    bytes[index++]= Convert.ToByte(str.Substring(i,2),16);}string decrypt=null;switch(encry){case EnumEncrypt.GB2312:
                        decrypt= Encoding.Default.GetString(bytes);break;case EnumEncrypt.UTF8:
                        decrypt= Encoding.UTF8.GetString(bytes);break;}return decrypt;}catch{return str;}}}/// <summary>/// 加密编码格式/// </summary>publicenumEnumEncrypt{/// <summary>/// 不进行加密/// </summary>
        Default,/// <summary>/// GB2312编码/// </summary>
        GB2312,/// <summary>/// UTF8编码/// </summary>
        UTF8,}
  • 作者:风,停下
  • 原文链接:https://blog.csdn.net/weixin_47492910/article/details/122958414
    更新时间:2022-10-27 09:18:46