簡體   English   中英

C# 反序列化 JSON 數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM