C# - Json.NET Config?

本文关键字:Config NET Json | 更新日期: 2023-09-27 17:56:48

我正在尝试使用 Json.NET 制作一个配置读取器类。

这是类:

 public sealed class ConfigFile : Dictionary<string, object>
    {
        public string FileName { get; private set; }
        public ConfigFile(string fileName)
        {
            this.FileName = fileName;
            this.Load();
        }
        private void Load()
        {
            string contents = File.ReadAllText(this.FileName);
            JsonTextReader reader = new JsonTextReader(new StringReader(contents));
            string lastKey = "";
            while (reader.Read())
            {
                if (reader.TokenType == JsonToken.PropertyName)
                {
                    lastKey = reader.Value.ToString();
                }
                else
                {
                    if (this.ContainsKey(lastKey))
                    {
                        continue;
                    }
                    this.Add(lastKey, reader.Value);
                }
            }
        }

它工作得很好。但是,它会逐行读取。这意味着如果我得到一个像列表这样的对象,它将无法正确解析它。

我有几个问题。

  1. Json.NET 的反序列化程序如何知道如何正确读取 .json 文件并强制转换为正确的类型?如何在课堂上模仿相同的行为?
  2. 如何使用与 JSON 中相同的读取行为。Net的反序列化程序在我的类中,所以我可以正确读取配置文件?

谢谢。

C# - Json.NET Config?

我强烈建议挖掘Newtonsoft.Json的来源。您似乎正在寻找的操作分为ReadInternal方法和以下Parse*方法。请看这里

当然,你可以通过阅读代码学到很多东西,看起来finite state machine主要是抽象,允许处理对象的读取和写入。