我有一个像这样的 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/