C#操作Yaml

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;
        }


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值