javascript - C# JSON 反序列化为复杂类

标签 javascript c# json serialization json.net

我有一个像这样的 JSON

    {
  "Application": [
    {
      "Office": "London",
      "LogPath": [
        "\\\\server1\filepath\\"           
      ]
    },
    {
      "Office": "Paris",
      "LogPath": [
        "\\\\server2\\logpath1\\",
        "\\\\server2\\logpath2\\"
      ]
    }
  ],
  "MailSettings": {
    "MailTo": "mymail@mydomain.it",
    "MailSubject" :  "Log Checker"
  } 
}

我创建了一个自定义类来读取 json 内容:

public class RootObject
  {
    public Application Application { get; set; }
    public MailSettings MailSettings { get; set; }
  }

  public class Application
  {
    public List<Offices> Offices { get; set; }
  }

  public class Offices
  {
    public string Office{ get; set; }
    public IList<string> LogPath { get; set; }
  }

  public class MailSettings
  {
    public string MailTo { get; set; }
    public string MailSubject { get; set; }
  }

但是当我尝试使用 反序列化 json

RootObject rootObject = JsonConvert.DeserializeObject<RootObject>(json);

我返回错误: 该类型需要一个 JSON 对象(例如 {"name":"value"})才能正确反序列化。

我的自定义类有什么问题?

最佳答案

您可以使用 json2csharp 生成类型- 节省手工制作 JSON 对象的表示。

public class RootObject
{
    public List<Application> Application { get; set; }
    public MailSettings MailSettings { get; set; }
}

public class Application
{
    public string Office { get; set; }
    public List<string> LogPath { get; set; }
}

public class MailSettings
{
    public string MailTo { get; set; }
    public string MailSubject { get; set; }
}

使用 Visual Studio“将 JSON 粘贴为类”可为您提供同样的功能,但略有不同:

    public class Rootobject
    {
        public Application[] Application { get; set; }
        public Mailsettings MailSettings { get; set; }
    }

    public class Mailsettings
    {
        public string MailTo { get; set; }
        public string MailSubject { get; set; }
    }

    public class Application
    {
        public string Office { get; set; }
        public string[] LogPath { get; set; }
    }

Visual Studio Code 用户可以使用 JSON as Code extension 获得相同的功能,由 QuickType 提供支持。

关于javascript - C# JSON 反序列化为复杂类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53498345/

相关文章:

javascript - 如何将可观察数组中的默认值绑定(bind)到下拉列表?

javascript - 比较两个复杂的 json (Javascript)

javascript - 使用history.push时如何正确清理useEffect?

javascript - 如何在 Node 服务器中提供带有哈希名称的捆绑 js 文件?

c# - ConfigureAwait(false) 和库代码中的事件

c# - DataGridView SortCompare 事件不会触发

javascript - 在 AngularJS 中加载 JSON 数据之前出现 "loading"或 "wait"消息

javascript - Android 键盘覆盖 Web 表单上的元素

javascript - 为什么我的 javascript window.open 函数读取 url,而不是数组中的宽度和高度参数?

c# - 在 C# 中将匿名类型转换为列表