C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置

参考页面:

http://www.yuanjiaocheng.net/webapi/test-webapi.html

http://www.yuanjiaocheng.net/webapi/web-api-controller.html

http://www.yuanjiaocheng.net/webapi/config-webapi.html

http://www.yuanjiaocheng.net/webapi/web-api-route.html

http://www.yuanjiaocheng.net/webapi/parameter-binding.html

用于永久化对象,什么程序都行,依赖NewtonSoft。用于json序列化和反序列化。

 1 using Newtonsoft.Json;
 2 using System;
 3 using System.Collections.Generic;
 4 using System.IO;
 5 using System.Linq;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8
 9 namespace ConfigHandler
10 {
11     public class ConfigHandler<T>
12         where T : class
13     {
14         const string SAVE_PATH = "jsonconfig/";
15         /// <summary>
16         /// 单例模式
17         /// </summary>
18         static T config;
19         private ConfigHandler()
20         {
21
22         }
23         /// <summary>
24         /// 获取保存地址,默认是泛型参数T的类型名称
25         /// </summary>
26         /// <returns></returns>
27         private static string GetSavePath()
28         {
29             if (!Directory.Exists(SAVE_PATH))
30             {
31                 Directory.CreateDirectory(SAVE_PATH);
32             }
33             return $"{SAVE_PATH}{typeof(T).ToString()}.json";
34         }
35         /// <summary>
36         /// 保存配置
37         /// </summary>
38         public static void Save(T _config)
39         {
40             config = _config;
41             string json = JsonConvert.SerializeObject(_config);
42             try
43             {
44                 using (var sw = new StreamWriter(GetSavePath()))
45                 {
46                     sw.WriteAsync(json);
47                 }
48
49             }
50             catch (Exception)
51             {
52                 throw;
53             }
54         }
55         /// <summary>
56         /// 获取配置信息
57         /// </summary>
58         /// <returns></returns>
59         public static T Load()
60         {
61             if (config == null)
62             {
63                 string json = "";
64                 try
65                 {
66                     using (var sr = new StreamReader(GetSavePath()))
67                     {
68                         json = sr.ReadToEnd();
69                         if (json != "")
70                         {
71                             config = JsonConvert.DeserializeObject<T>(json);
72                         }
73                         else
74                         {
75                             config = null;
76                         }
77                     }
78                 }
79                 catch (Exception)
80                 {
81                     config = null;
82                 }
83             }
84             return config;
85         }
86
87     }
88
89
90 }

demo:

using ConfigHandler;
using ConsoleApplication1;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            MyConfig config = new MyConfig();
            config = new MyConfig();
            config.name = "leiming";
            config.Age = 20;
            config.Time = DateTime.Now;
            ConfigHandler<MyConfig>.Save(config);
            config = ConfigHandler<MyConfig>.Load();
            Console.WriteLine(config.ToString());
            Console.ReadKey();
        }
    }
    class MyConfig
    {
        public int Hello{get;set;}
        public string name { get; set; }
        public int Age { get; set; }
        public DateTime Time { get; set; }
        public override string ToString()
        {
            return $"Name={name},Age={Age},Time={Time.ToShortDateString()}";
        }
    }
}

时间: 2024-11-09 04:21:08

C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置的相关文章

JVM的内存区域划分,对象实例化分析

一.JVM程序具体执行过程 由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分.在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:                                     如上图所示,Java源代码文件(.java后缀)经过Java编译器编译成为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行.在整个程序执行过程中,JVM会用一

.Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程

JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询.目前已被微软集成于webapi框架之中,因此,熟练掌握JSON.NET相当重要,这篇文章是零度参考官网整理的示例,通过这些示例,可以全面了解JSON.NET提供的功能. Newtonsoft.Json的地址: 官网:http://json.codeplex.com/ 源码地址:https://gi

json字符串转换成对象,对象转换成json字符串

方法一: 程序集:  System.Web.Extensions; 命名空间:System.Web.Script.Serialization; 最重要的类:JavaScriptSerializer //实例化 JavaScriptSerializer js = new JavaScriptSerializer(); js.Serialize();//将对象转换成json字符串:    序列号 js.Deserialize();//将json字符串转换成对象:  反序列化 方法二: 程序集:New

python 将类对象转换成json

如果将字典转换成json,想必都很熟悉了,如果在进阶点,将class类转换成json对象该如何操作了? 1,先定义一个类 #定义一个Student类 class Student(object): def __init__(self,name,age,score): self.name = name self.age = age self.score = score 2,在实例化Student类,传入3个参数 #实例化这个对象 s = Student('hello',20,80) 3,利用json

JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。

JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对象.要添加System.Web.Extensions.dll的引用.该类位于System.Web.Script.Serialization命名空间下. 一.属性 MaxJsonLength 获取或设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度. Recursio

快速将对象转化为JSON格式

1.导入阿里巴巴fastjson包. <!-- fastJson将对象转化为Json对象 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.24</version> </dependency> 2.写一个公共的Action类,调用jar包中的toJSONStri

atitit.XML类库选型及object 对象bean 跟json转换方案

atitit.XML类库选型及object 对象bean 跟json转换方案 1. XML类库可以分成2大类.标准的.这些类库通常接口和实现都是分开的 1 2. 常见的xml方面的方法 2 2.1. xml解析 2 2.2. bean与xml互相转换 2 2.3. json与xml的互相转换 2 3. 大名鼎鼎的 DOM  绿色环保的 SAX 默默无闻的 Digester 2 3.1. 默默无闻的 Digester:XML 的 JavaBean 化 2 4. Digester 解析 XML 3

对象实例化的顺序

对象实例化的顺序 分类:java, 基础日期:2012-11-08作者:ticmy http://www.ticmy.com/?p=302 创建一个对象大概有以下几种方式:1.通过new关键字,如new Object();2.通过某些反射类的newInstance方法,如Class#newInstance.Constructor#newInstance;3.如果对象是Cloneable的,通过clone方法;4.通过ObjectInputStream#readObject反序列化;以上是通过ja

JSON对象转换成JSON字符串

1.问题背景 有一个json对象,需要将其转换成json字符串 JSON.stringify(obj) 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtm