我是靠谱客的博主 懦弱毛巾,最近开发中收集的这篇文章主要介绍YAML 第三章 C#解析YAMLYAML 第三章 C#解析YAML简介声明c#解析YAML库YamlDotNet使用方法使用YamlDotNet读取Unity中资源章节参考资料,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

YAML 第三章 C#解析YAML

简介

YAML作为一个开放式的格式,已经被很多语言所解析,由于本系列文章中有部分与Unity有关,所以此文中将重点介绍如何使用C#中的YamlDotNet库进行解析Yaml。

声明

本文中的内容属于个人总结整理而来,个人水平有限,对于部分细节难免有理解错误及遗漏之处,如果您在阅读过程中有所发现,希望您能指正,同时文章中的部分内容也参考了其它大神的文章,如果文章中的内容侵犯了您的权益,表示非常歉意,请您指出,我将尽快修改。

如果您进行转载,请标明出处。

YAML学习笔记三 C#解析YAML(http://www.liyubin.com/articles/2019/03/14/1552530988343.html)

c#解析YAML库

C#/.NET解析YAML的库主要有以下:

  • YamlDotNet
  • yaml-net
  • yatools.net

上述的库中尤其以YamlDotNet为使用量最大,同时YamlDotNet在Unity的商店中也提供了对应的下载,所以本文将以YamlDotNet做为C#解析的主要的库

GitHub

Asset Store

YamlDotNet使用方法

示例相关的代码:

  public class Address
  {
      public string Street { get; set; }
      public string City { get; set; }
      public string State { get; set; }
  }

  private string yamlStr =
    @"---
    street: '123 Tornado AlleynSuite 16'
    city: 'East Westville'
    state: 'KS'
    ...";
  • Deserializing an object graph

    var input = new StringReader(yamlStr);
    var deserializer = new DeserializerBuilder()
                  .WithNamingConvention(new CamelCaseNamingConvention())
                  .Build();
    
    var order = deserializer.Deserialize<Address>(input);
    
    
  • Serializing an object graph

    var address = new Address() { Street = "Test street", City = "Test City", State = "Test State" };
    var serializer = new SerializerBuilder().Build();
    var yaml = serializer.Serialize(address);
    
  • Loading a YAML Stream

    var input = new StringReader(yamlStr);
    var yaml = new YamlStream();
    yaml.Load(input);
    
    var mapping =
        (YamlMappingNode)yaml.Documents[0].RootNode;
    
    foreach (var entry in mapping.Children)
    {
        Debug.Log(((YamlScalarNode)entry.Key).Value);
    }
    
  • YAML与JSON

    YAML转换到JSON:

    var input = new StringReader(yamlStr);
    var deserializer = new DeserializerBuilder().Build();
    var yamlObject = deserializer.Deserialize(input);
    
    var serializer = new SerializerBuilder()
        .JsonCompatible()
        .Build();
    
    var json = serializer.Serialize(yamlObject);
    
  • YamlMemberAttribute

    [YamlMember(Alias = “ship-to”, ApplyNamingConventions = false)]
    为属性重新命名

使用YamlDotNet读取Unity中资源

  • 读取meta文件

    string content = File.ReadAllText(metaFilePath);
    var input = new StringReader(content);
    var deserializer = new DeserializerBuilder().Build();
    var yamlObject = deserializer.Deserialize(input);
    

    将会将Meta文件中的内容解析为Dictionary类型

  • 读取prefab文件

    var input = new StreamReader(prefabPath, Encoding.UTF8);
    var yaml = new YamlStream();
    yaml.Load(input);
    for (int i = 0; i < yaml.Documents.Count; i++)
    {
        string str = "";
        str = str + (YamlMappingNode)yaml.Documents[i].RootNode + "n";
        Debug.Log(str);
        foreach (YamlDotNet.RepresentationModel.YamlNode yamlNode in yaml.Documents[i].AllNodes)
        {
            Debug.Log(yamlNode.ToString());
        }
    }
    

    将会解析unity序列化的prefab的信息,并输出

章节

  • YAML学习笔记 总章
  • 第一章 YAML基本概念及语法
  • 第二章 YAML与Unity
  • 第三章 C#解析YAML

参考资料

  • YamlDotNet
  • YamlDotNet for Unity
  • Unity场景和代码合并以及UnityYAMLMerge的使用

最后

以上就是懦弱毛巾为你收集整理的YAML 第三章 C#解析YAMLYAML 第三章 C#解析YAML简介声明c#解析YAML库YamlDotNet使用方法使用YamlDotNet读取Unity中资源章节参考资料的全部内容,希望文章能够帮你解决YAML 第三章 C#解析YAMLYAML 第三章 C#解析YAML简介声明c#解析YAML库YamlDotNet使用方法使用YamlDotNet读取Unity中资源章节参考资料所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部