[英]C# Deserialize list in JSON
假設我有這樣的JSON,如何為反序列化為類建模?
對於標准屬性(例如“虛擬”或普通數組)的類建模,我沒有問題,但是在這種情況下,我的“鏈接”數組是具有不同名稱(“附加項”,“條件”,“轉換”等的項的列表) )。
"dummy": "1",
"links": {
"addons": {
"href": "/16071d9f-efec-4282-a42e-a495eea76ae0/offers/031C9E47-4802-4248-838E-778FB1D2CC05/addons",
"method": "GET"
},
"conditions": {
"href": "/16071d9f-efec-4282-a42e-a495eea76ae0/offers/031C9E47-4802-4248-838E-778FB1D2CC05/conditions",
"method": "GET"
},
"conversions": {
"href": "/16071d9f-efec-4282-a42e-a495eea76ae0/offers/031C9E47-4802-4248-838E-778FB1D2CC05/conversions",
"method": "GET"
},
"list_prices": {
"href": "/16071d9f-efec-4282-a42e-a495eea76ae0/offers/031C9E47-4802-4248-838E-778FB1D2CC05/list-prices",
"method": "GET"
},
"mutual_exclusion": {
"href": "/16071d9f-efec-4282-a42e-a495eea76ae0/offers/031C9E47-4802-4248-838E-778FB1D2CC05/mutually-exclusive-offers",
"method": "GET"
},
"prerequisites": {
"href": "/16071d9f-efec-4282-a42e-a495eea76ae0/offers/031C9E47-4802-4248-838E-778FB1D2CC05/prerequisites",
"method": "GET"
},
"product": {
"href": "/16071d9f-efec-4282-a42e-a495eea76ae0/products/f245ecc8-75af-4f8e-b61f-27d8114de5f3",
"method": "GET"
}
},
假設您要查找的是LinkTypes
集合,是否可以在JSON中使用類似以下內容的代碼,並在RootObject
上執行Deserialize
?
在小提琴頁面的“控制台”窗格上簽出輸出。
public class Link
{
public string Href { get; set; }
public string Method { get; set; }
}
public class Links
{
[JsonProperty("addons")]
public Link Addons { get; set; }
[JsonProperty("conditions")]
public Link Conditions { get; set; }
[JsonProperty("conversions")]
public Link Conversions { get; set; }
[JsonProperty("list_prices")]
public Link ListPrices { get; set; }
[JsonProperty("mutual_exclusion")]
public Link MutualExclusion { get; set; }
[JsonProperty("prerequisites")]
public Link Prerequisites { get; set; }
[JsonProperty("product")]
public Link Product { get; set; }
}
public class RootObject
{
public string dummy { get; set; }
public Links links { get; set; }
}
然后像這樣執行Deserializer
。
var myDummyLinksList = JsonConvert.DeserializeObject<RootObject>(jsonText);
其中jsonText
包含您在示例中列出的json字符串:
但是,如果links
List
的對象是動態的,並且內部對象的數量各不相同,並且您需要捕獲所有這些對象, 那么您可能必須編寫一個繼承自 然后使用@mfarouk發布的答案 。 JsonConverter
對象的自定義Converter 。
我分叉了dotNet Fiddle並實施了他的解決方案,它像動態案例的老板一樣工作!
希望這可以幫助!
links
屬性可以解析為鍵,值字典,類可以像
public class JSONClass
{
public string dummy { get; set; }
public Dictionary<string, Link> links;
public class Link
{
public string Href { get; set; }
public string Method { get; set; }
}
}
然后反序列化為
var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<JSONClass>(JSON);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.