![](/img/trans.png)
[英]How do I deserialize a json with nested array in c# using Newtonsoft.Json
[英]How to correctly deserialize nested object in array with Newtonsoft.Json?
我正面臨這個json數據:
{
"pagemeta": {
"slug": "/",
"title": "test",
"description": "test"
},
"navigationlinks": {
"links": [{
"navigationlink": {
"name": "Index.",
"url": "/"
}
}]
}
}
並且都使用HttpRespondeMessage.Content.ReadAsJsonAsync<T>();
或JsonConvert.DeserializeAnonymousType(jsonString, new MyClassToDeserializeInto())
兩種JsonConvert.DeserializeAnonymousType(jsonString, new MyClassToDeserializeInto())
似乎都運行良好,除非涉及到數組"links"
的對象。
那些確實會成為類中數組中的對象,但所有數據都為null
( name
和url
像本例中一樣)。
我做錯了什么沒有正確反序列化json嗎?
以下是我用作最終目標對象的類:
HomeData.cs
public sealed class HomeData
{
[JsonProperty("pagemeta")]
public PageMeta PageMeta { get; set; }
[JsonProperty("navigationlinks")]
public NavigationLinks NavigationLinks { get; set; }
}
導航鏈接.cs
public class NavigationLinks
{
[JsonProperty("links")]
public NavigationLink[] Links { get; set; }
}
導航鏈接.cs
public class NavigationLink
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("url")]
public string Url { get; set; }
}
同時PageMeta.cs
正確處理數據。
您錯過了 Links 類,並將 Links 類標記為 JsonObject
public sealed class HomeData
{
[JsonProperty("pagemeta")]
public PageMeta PageMeta { get; set; }
[JsonProperty("navigationlinks")]
public NavigationLinks NavigationLinks { get; set; }
}
public class PageMeta
{
[JsonProperty("slug")]
public string Slug { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("description")]
public string Description { get; set; }
}
public class NavigationLink
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("url")]
public string Url { get; set; }
}
public class NavigationLinks
{
[JsonProperty("links")]
public Links[] Links { get; set; }
}
[JsonObject]
public class Links
{
[JsonProperty("navigationlink")]
public NavigationLink NavigationLink { get; set; }
}
然后像這樣使用它:
var homedata = JsonConvert.DeserializeAnonymousType(text, new HomeData());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.