1. 首先需要到NuGet安装Newtonsoft.Json
2. 代码
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 序列化对象为json字符串
{
class Program
{
static void Main(string[] args)
{
Person person = new Person();
//person.Name = "戈文文";
//person.Age = 18;
//person.Sex = '男';
//person.SetSallary(100.2);
//将对象序列化后保存到json文件 注意:对象中的私有字段不会被序列化
//ObjectToJsonfile("a.json", person);
//将json文件转为Person对象
person = JsonfileToObject<Person>("a.json");
person.Say();
Console.WriteLine("成功");
Console.ReadKey();
}
/// <summary>
/// 将对象序列化后保存到json文件
/// </summary>
/// <param name="path"></param>
/// <param name="obj"></param>
public static void ObjectToJsonfile(string path, object obj)
{
//string str = JsonConvert.SerializeObject(obj);
string str = JsonConvert.SerializeObject(obj, Formatting.Indented);
File.WriteAllText(path, str);
//using (FileStream fs= new FileStream(path,FileMode.Create))
//{
// StreamWriter sw = new StreamWriter(fs);
// sw.Write(str);
// sw.Flush();
// sw.Close();
//}
}
/// <summary>
/// 将json文件转为对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="path"></param>
/// <returns></returns>
public static T JsonfileToObject<T>(string path)
{
//string str = string.Empty;
//using(FileStream fs=new FileStream(path, FileMode.Open))
//{
// StreamReader sr = new StreamReader(fs);
// str = sr.ReadToEnd();
// sr.Close();
//}
string str = File.ReadAllText(path);
return JsonConvert.DeserializeObject<T>(str);
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public char Sex { get; set; }
private double sallary = 111;//对象中的私有字段不会被序列化
public void Say()
{
Console.WriteLine($"大家好,我叫{this.Name},今年{this.Age}岁,工资:{this.sallary}");
}
public void SetSallary(double value)
{
sallary = value;
}
}
}