如何将此C#返回值序列化为JSON对象?

Nik*_*kin 1 c#

我有这个要返回的对象值,我想将其转换为可以检查和操作的有用的JSON对象。最终,我的目标是验证的价值观usernameaccessKey。但是有2件事情使这件事不起作用。Double {{使它成为无效的JSON,sauce:options并且不能转换为类中的属性。

{{
  "browserName": "MicrosoftEdge",
  "browserVersion": "latest",
  "platformName": "Windows 10",
  "sauce:options": {
    "username": "test",
    "accessKey": "123"
  }
}}
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

string output = JsonConvert.SerializeObject(SauceSession.Options.ConfiguredEdgeOptions);
Run Code Online (Sandbox Code Playgroud)

SauceSession.Options.ConfiguredEdgeOptions将返回我上面提到的那个对象。

回过头来: Newtonsoft.Json.JsonSerializationException:“从'OpenQA.Selenium.Edge.EdgeOptions'的'BinaryLocation'获取值时出错。”

我还根据建议尝试了此操作:

var serialized = JsonConvert.SerializeObject(SauceSession.Options.ConfiguredEdgeOptions);
Run Code Online (Sandbox Code Playgroud)

并返回此Newtonsoft.Json.JsonSerializationException:“从'OpenQA.Selenium.Edge.EdgeOptions'上的'BinaryLocation'获取值时出错。”

Dav*_*idG 6

由于您无法修复源代码,因此您将必须使用凸出部分来修复JSON,例如,这将起作用:

var fixedJson = sourceJson.Substring(1, Json.Length - 2);
Run Code Online (Sandbox Code Playgroud)

现在您应该有几个类来保存数据,这样,您还可以处理不寻常的名称:

public class Root
{
    public string BrowserName { get; set; }
    public string BrowserVersion { get; set; }
    public string PlatformName { get; set; }

    [JsonProperty("sauce:options")]
    public Options SauceOptions { get; set; }
}

public class Options
{
    public string Username { get; set; }
    public string AccessKey { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在您应该可以像这样反序列化了:

var root = JsonConvert.DeserializeObject<Root>(fixedJson);
Run Code Online (Sandbox Code Playgroud)