C#操作Yaml
YamlDotNet
public class DataYaml
{
/// <summary>
/// 数据路径
/// </summary>
public string path { get; set; }
/// <summary>
/// 训练集路径
/// </summary>
public string train { get; set; }
/// <summary>
/// 验证集路径
/// </summary>
public string val { get; set; }
/// <summary>
/// 类别
/// </summary>
public Dictionary<int, string> names { get; set; }
}
实例
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestYaml
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static bool CreateYaml(object data,string yaml_path)
{
try
{
YamlDotNet.Serialization.Serializer serializer = new YamlDotNet.Serialization.Serializer();
StringWriter strWriter = new StringWriter();
serializer.Serialize(strWriter, data);
serializer.Serialize(Console.Out, data);
using (TextWriter writer = File.CreateText(yaml_path))
{
writer.Write(strWriter.ToString());
}
return true;
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
return false;
}
}
public static T ReadYaml<T>(string yaml_path)
{
if (!File.Exists(yaml_path))
{
throw new FileNotFoundException();
}
StreamReader yamlReader = File.OpenText(yaml_path);
YamlDotNet.Serialization.Deserializer yamlDeserializer = new YamlDotNet.Serialization.Deserializer();
//读取持久化对象
T content = yamlDeserializer.Deserialize<T>(yamlReader);
yamlReader.Close();
return content;
}
/// <summary>
/// 写入数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
DataYaml dataYaml = new DataYaml();
dataYaml.path = "./test/test";
dataYaml.train = "train";
dataYaml.val = "val";
Dictionary<int, string> teset = new Dictionary<int, string>();
teset[1] = "test";
teset[2] = "test2";
teset[3] = "test3";
dataYaml.jjj = teset;
List<string> nnn = new List<string> { "1", "2", "3" };
dataYaml.names = nnn;
CreateYaml(dataYaml,"ttttt.yaml");
MessageBox.Show("写入成功!");
}
/// <summary>
/// 读取数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
DataYaml config = new DataYaml();
config = ReadYaml<DataYaml>("ttttt.yaml");
Console.WriteLine(config);
}
}
public class DataYaml
{
/// <summary>
/// 数据路径
/// </summary>
public string path { get; set; }
/// <summary>
/// 训练集路径
/// </summary>
public string train { get; set; }
/// <summary>
/// 验证集路径
/// </summary>
public string val { get; set; }
/// <summary>
/// 类别
/// </summary>
public List<string> names { get; set; }
public Dictionary<int, string> jjj { get; set; }
}
}
YamlHelper
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace TestUI
{
public class YamlHelper
{
public static bool CreateYaml(object data, string yaml_path)
{
try
{
YamlDotNet.Serialization.Serializer serializer = new YamlDotNet.Serialization.Serializer();
StringWriter strWriter = new StringWriter();
serializer.Serialize(strWriter, data);
serializer.Serialize(Console.Out, data);
using (TextWriter writer = File.CreateText(yaml_path))
{
writer.Write(strWriter.ToString());
}
return true;
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
return false;
}
}
public static T ReadYaml<T>(string yaml_path)
{
if (!File.Exists(yaml_path))
{
throw new FileNotFoundException();
}
StreamReader yamlReader = File.OpenText(yaml_path);
YamlDotNet.Serialization.Deserializer yamlDeserializer = new YamlDotNet.Serialization.Deserializer();
//读取持久化对象
T content = yamlDeserializer.Deserialize<T>(yamlReader);
yamlReader.Close();
return content;
}
}
}