[英]C# JSON deserialize into complex class
我有這樣的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; }
}
您的自定義類應該像這樣。
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; }
}
public class RootObject
{
public List<Application> Application { get; set; }
public MailSettings MailSettings { get; set; }
}
復制您的json字符串,並使用Visual Studio內置功能為各個json創建自定義類。
-轉到編輯->特殊粘貼->將JSON作為類粘貼
這將為您創建自定義類。 現在使用Newtonsoft.Json庫,您可以反序列化json。
我測試了您的代碼。您的問題出在您的RootObject模型中。 在RootObject中,您有一個應用程序集合,而不是單個應用程序。 我改變了它,正確地扭曲了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.