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

标签 c#

我有这个要返回的对象值,我想将它转换成我可以检查和操作的有用的 JSON 对象。最终,我的目标是验证 usernameaccessKey 的值。但是有两件事正在解决这个问题。双 {{ 使其成为无效的 JSON 并且 sauce:options 无法转换为类中的属性。

{{
  "browserName": "MicrosoftEdge",
  "browserVersion": "latest",
  "platformName": "Windows 10",
  "sauce:options": {
    "username": "test",
    "accessKey": "123"
  }
}}

这是我尝试过的:

string output = JsonConvert.SerializeObject(SauceSession.Options.ConfiguredEdgeOptions);

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

得到这个: Newtonsoft.Json.JsonSerializationException:“从‘OpenQA.Selenium.Edge.EdgeOptions’上的‘BinaryLocation’获取值时出错。”

我也按照建议尝试了这个:

var serialized = JsonConvert.SerializeObject(SauceSession.Options.ConfiguredEdgeOptions);

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

最佳答案

由于您无法修复源,因此您将不得不应用一个 bodge 来修复 JSON,例如这将起作用:

var fixedJson = sourceJson.Substring(1, Json.Length - 2);

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

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; }
}

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

var root = JsonConvert.DeserializeObject<Root>(fixedJson);

关于c# - 如何将此 C# 返回值序列化为 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59036532/

相关文章:

javascript - 使用javascript在包含特殊字符的URL中传递参数

c# - NeuronDotNet 中的神经网络

c# - 将参数传递给 dotnet 测试项目?

c# - ElasticSearch:写入后立即查询数据

c# - { };是什么以及如何做在 C# 中工作?

c# - Visual Studio 2010 安装项目,卸载或更改程序列表中缺少图标

c# - 有没有办法通过 SMB 共享上的创建时间来枚举文件?

c# - 如何有效地交叉引用 2 个文本文件? |改进我的代码

c# - 如何将此对象保存到文件中?

c# - 检查滚动条可见性