0
我正在尝试使用Json.NET制作配置读取器类。C# - 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);
}
}
}
它工作得很好。但是,它会逐行读取。这意味着如果我有一个像列表一样的对象,它不会正确解析它。
我有几个问题。
- Json.NET的Deserializer如何知道如何正确读取.json文件并将其转换为正确的类型?我怎样才能模仿我班上的同一行为?
- 如何在我的类中使用JSON.Net Deserializer中使用的相同阅读行为,以便我可以正确读取配置文件?
谢谢。
我已通过调用Read来使用ReadInternal。但是,就像我说的那样,它逐行读取,这不是我正在寻找的。我想要在JsonConvert.DeserializeObject中使用相同的行为,以便它可以读取所有内容并将其添加到字典中,而不是将其分配给T. –
您可以实现自己的贪婪逻辑。加载所有内容并解析整个片段。仍然没有得到你的问题是什么?原始的源代码足以对所有的逻辑进行逆向工程,不是吗? –