C# 将XML开启器(读取器)更改为JSON

C# 将XML开启器(读取器)更改为JSON,c#,json,xml,C#,Json,Xml,我遵循了一个很好的教程,该教程展示了如何使用C Selenium构建自动化框架。 配置文件目前是XML格式的,但我需要更多的练习,并将其更改为.json文件 目前,我们正在使用名称空间System.Xml.XPath;我的问题是,JSON也有类似的功能吗?比如说System.Json;这与我的XML阅读器的工作原理相同。所以我不需要重构太多的代码,或者这是不可避免的 这就是目前的工作方式 //Initialize ConfigReader.SetFrameworkSettings(); pub

我遵循了一个很好的教程,该教程展示了如何使用C Selenium构建自动化框架。 配置文件目前是XML格式的,但我需要更多的练习,并将其更改为.json文件

目前,我们正在使用名称空间System.Xml.XPath;我的问题是,JSON也有类似的功能吗?比如说System.Json;这与我的XML阅读器的工作原理相同。所以我不需要重构太多的代码,或者这是不可避免的

这就是目前的工作方式

//Initialize
ConfigReader.SetFrameworkSettings();

public class ConfigReader
{

        public static void SetFrameworkSettings()
        {
            XPathItem aut;

            string strFilename = Environment.CurrentDirectory.ToString() + "\\Config\\GlobalConfig.xml";
            FileStream stream = new FileStream(strFilename, FileMode.Open);
            XPathDocument document = new XPathDocument(stream);
            XPathNavigator navigator = document.CreateNavigator();

            //Get XML Details and pass it in XPathItem type variables
            aut = navigator.SelectSingleNode("AutoFramework/RunSettings/AUT");
            Settings.AUT = aut.Value.ToString();
        }
    }

public class Settings
{
    public static string AUT { get; set; }
}
如果你能改变这两行就太棒了

XPathDocument document = new XPathDocument(stream);
XPathNavigator navigator = document.CreateNavigator()
还有XpathItem

干杯

我建议使用Nuget提供的Newtonsoft.Json。 要重用当前代码,您必须先对转换器进行一些基本设置:

上述示例要求您将设置类从静态更改为:

public class Settings
{
    public static string AUT { get; set; }
}
举例来说:

public class Settings
{
    public string AUT { get; set; }
}
如果你想让它保持静止。您应该使用Newtonsoft.Json库中的JObject:

JObject obj = JObject.Parse(jsonString);
Settings.AUT = obj.SelectToken("AUT").Value<string>();

您可以始终使用JsonConvert.Serialize和JsonConvert.Deserialize方法,而不是我创建的JsonSerialization helper类,但在我看来,您对代码的控制越少,问题就越大。

我认为关于JSON.NET的以下答案可以为您指出正确的解决方案:您可以将流传递给JSON.NET库,但您还需要更新行aut=navigator.SelectSingleNodeeAutoFramework/RunSettings/aut;因为这是特定于XML的。@thomasvdb将读取!谢谢你!谢谢你的解释。我会直接测试这个
public class Settings
{
    public string AUT { get; set; }
}
JObject obj = JObject.Parse(jsonString);
Settings.AUT = obj.SelectToken("AUT").Value<string>();