[英]C# Deserialize JSON array
我在反序列化和定義此 JSON 結構時遇到問題,希望得到一些幫助。 我已將其恢復到最后一個已知的工作位置,因為我只是在這里脫離正軌。
我的 JSON 結構是:
[{
"name": "Name1",
"description": "Description of this process",
"Location": "ANY",
"SubItems": [{
"name": "sub1",
"required": true,
"description": "This is a short description"
}, {
"name": "sub2",
"required": true,
"description": "This is a short description"
}, {
"name": "sub3",
"required": true,
"description": "This is a short description"
}],
"outputs": [{
"name": "out1",
"required": false
}, {
"name": "exit code",
"required": false
}]
}, {
"name": "Name2",
"description": "This is a short description",
"Location": "ANY",
"SubItems": [{
"name": "sub1",
"required": false,
"description": "This is a short description"
}]
}]
這是我上次工作的 C# Json 定義。
public class JsonObject
{
[JsonProperty("name")]
public string ProcessName { get; set; }
[JsonProperty("description")]
public string ProcessDescription { get; set; }
[JsonProperty("Location")]
public string KnownLocation { get; set; }
}
我目前只捕獲幾個定義進行測試。
這是我的反序列化對象
var Object = JsonConvert.DeserializeObject <List<JsonObject>>(txt);
foreach (JsonObject JsonObject in Object)
{
Console.WriteLine("Name: " + JsonObject.ProcessName);
Console.WriteLine();
Console.WriteLine("Description: " +JsonObject.ProcessDescription);
Console.WriteLine();
}
因此,正如我所說,我至少可以在輸出中獲得前 3 個頂級 JSON 元素。 當我開始嘗試獲取“子項目”和“輸出”時,問題就開始了
我遵循以下鏈接帖子的結構,並非常努力地理解它,但過了一段時間我意識到該解決方案不適用於此問題。 我只是有一個多維數組 JSON 對象。 字面上有一個頂層和 2 個子層
我試圖嘗試做...
List<List<JsonObject>>Object = JsonConvert.DeserializeObject <List<List<JsonObject>>>(txt);
並嘗試使用 3 組 JSON 定義使用不同名稱的 2 個相同列表。
並實現了分層的 foreach 循環,但隨后我無法訪問最頂層 JSON 的定義,並且沒有為“SubItems”的實際元素編寫任何內容
我需要的是到達每個對象,真的。
c# - 如何反序列化具有多維數組的json文件以將其轉換為對象
相關問題
它不是多維數組。 只是一個包含數組的數組對象。 所以你的模型可以如下
public class SubItem
{
public string Name { get; set; }
public bool Required { get; set; }
public string Description { get; set; }
}
public class Output
{
public string Name { get; set; }
public bool Required { get; set; }
}
public class JsonObject
{
public string Name { get; set; }
public string Description { get; set; }
public string Location { get; set; }
public List<SubItem> SubItems { get; set; }
public List<Output> Outputs { get; set; }
}
你可以反序列化為
var obj = JsonConvert.DeserializeObject<List<JsonObject>>(jsonstring);
PS:您可以使用JsonProperty
來裝飾該模型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.