1.创建新工程:
2.添加NuGet包:
3.下载安装 Newtonsoft.Json包:
4.程序包安装完成:
5.Winform做两个按钮测试:
6.程序引用部分
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
添加Hunter类:
public partial class Hunter
{
public string system;
public List<string> arrCharacter = new List<string>();
}
7.数据写入Json文件--Write代码
//write
private void button1_Click(object sender, EventArgs e)
{
try
{
// 创建对象
JObject jsObj = new JObject();
jsObj.Add("career", "hunter");
JObject jsSystem = new JObject();
jsSystem.Add("name", "name");
jsSystem.Add("count", 999);
jsSystem.Add("unique", false);
JArray jsArraySys0 = new JArray();
JObject jsSys1 = new JObject();
jsSys1.Add("system_name", "强化系");
JArray jsArraySys1 = new JArray();
jsArraySys1.Add(new JValue("Gon"));
jsArraySys1.Add(new JValue("雷欧力"));
jsArraySys1.Add(new JValue("窝金"));
jsSys1.Add("character", jsArraySys1);
jsArraySys0.Add(jsSys1);
JObject jsSys2 = new JObject();
jsSys2.Add("system_name", "变化系");
JArray jsArraySys2 = new JArray();
jsArraySys2.Add(new JValue("Killua"));
jsArraySys2.Add(new JValue("西索"));
jsSys2.Add("character", jsArraySys2);
jsArraySys0.Add(jsSys2);
JObject jsSys3 = new JObject();
jsSys3.Add("system_name", "操作系");
JArray jsArraySys3 = new JArray();
jsArraySys3.Add(new JValue("侠客"));
jsArraySys3.Add(new JValue("半藏"));
jsSys3.Add("character", jsArraySys3);
jsArraySys0.Add(jsSys3);
JObject jsSys4 = new JObject();
jsSys4.Add("system_name", "具现化系");
JArray jsArraySys4 = new JArray();
jsArraySys4.Add(new JValue("Kula"));
jsArraySys4.Add(new JValue("库哔"));
jsArraySys4.Add(new JValue("小嘀"));
jsSys4.Add("character", jsArraySys4);
jsArraySys0.Add(jsSys4);
JObject jsSys5 = new JObject();
jsSys5.Add("system_name", "放出系");
JArray jsArraySys5 = new JArray();
jsArraySys5.Add(new JValue("富兰克林"));
jsArraySys5.Add(new JValue("旋律"));
jsArraySys5.Add(new JValue("爆弹魔"));
jsSys5.Add("character", jsArraySys5);
jsArraySys0.Add(jsSys5);
JObject jsSys6 = new JObject();
jsSys6.Add("system_name", "特质系");
JArray jsArraySys6 = new JArray();
jsArraySys6.Add(new JValue("Kula-火红眼"));
jsArraySys6.Add(new JValue("库洛洛"));
jsArraySys6.Add(new JValue("派克诺妲"));
jsSys6.Add("character", jsArraySys6);
jsArraySys0.Add(jsSys6);
jsSystem.Add("system", jsArraySys0);
jsObj.Add("system", jsSystem);
string strSrc = Convert.ToString(jsObj);//将json装换为string
File.WriteAllText(Directory.GetCurrentDirectory() + "\\test.json", strSrc, System.Text.Encoding.UTF8);//将内容写进json文件
}
catch (Exception ex)
{
}
}
写入成功,打开看看(查看工具可使用EditPlus或者VSCode都可):
8.读取Json文件数据--Read代码
//read
private void button2_Click(object sender, EventArgs e)
{
string folder = Directory.GetCurrentDirectory(); //获取应用程序的当前工作目录。
string path = folder + "\\test.json";
StreamReader file = File.OpenText(path);
JsonTextReader reader = new JsonTextReader(file);
JObject jsonObject = (JObject)JToken.ReadFrom(reader);
string career = jsonObject["career"].ToString();
int nCount = int.Parse(jsonObject["system"]["count"].ToString());
bool unique = bool.Parse(jsonObject["system"]["unique"].ToString());
if(m_arrHunter == null)
{
m_arrHunter = new List<Hunter>();
}
m_arrHunter.Clear();
int nSize = jsonObject["system"]["system"].Count();
for (int i = 0;i<nSize;i++)
{
Hunter hunter = new Hunter();
hunter.system = jsonObject["system"]["system"][i]["system_name"].ToString();
int nSize2 = jsonObject["system"]["system"][i]["character"].Count();
for(int j = 0;j<nSize2;j++)
{
hunter.arrCharacter.Add(jsonObject["system"]["system"][i]["character"][j].ToString());
}
m_arrHunter.Add(hunter);
}
for(int i = 0;i<m_arrHunter.Count;i++)
{
Console.Write(m_arrHunter[i].system+":\n");
int nSize2 = jsonObject["system"]["system"][i]["character"].Count();
for (int j = 0; j < nSize2; j++)
{
Console.Write(jsonObject["system"]["system"][i]["character"][j].ToString() + "\t");
}
Console.WriteLine("\n");
}
int xxx = 12;
}
表结构部分:
打印输出数据部分: