簡體   English   中英

有什么方法可以獲取以下json結果嗎?

[英]Is there any way to obtain following json result?

我有一個數據表

類名部門主題

 I          A         English

 I          A         Maths

 I          B         English

 II         A         English

我需要輸出為

[  
   {  
      "className":I,
      Division:[  
         {  
            name:A,
            subject:[  
               {  
                  name:english
               },
               {  
                  name:maths
               }
            ]
         },
         {  
            name:B,
            subject:[  
               {  
                  name:English
               }
            ]
         }
      ]
   },
   {  
      "ClassName":II,
      Division:[  
         {  
            name:A,
            subject:[  
               {  
                  name:english
               }
            ]
         }
      ]
   }
]

假設您從這樣的DataTable開始:

DataTable table = new DataTable();
table.Columns.Add("className");
table.Columns.Add("Division");
table.Columns.Add("Subject");
table.Rows.Add("I", "A", "English");
table.Rows.Add("I", "A", "Maths");
table.Rows.Add("I", "B", "English");
table.Rows.Add("II", "A", "English");

您可以這樣獲得所需的輸出:

List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in table.Rows)
    rows.Add(row);

var result = rows.GroupBy(r => r["className"])
                 .Select(g => new
                 {
                     className = g.Key,
                     division = g.GroupBy(r => r["Division"])
                                 .Select(g1 => new
                                 {
                                     name = g1.Key,
                                     subject = g1.Select(r => new
                                                 {
                                                     name = r["Subject"]
                                                 })
                                 })
                 });

string json = JsonConvert.SerializeObject(result, Formatting.Indented);
Console.WriteLine(json);

工作演示https : //dotnetfiddle.net/67mjiu

您有兩種選擇:

  1. 手動創建JSON(使用內置於對象類型的StringBuilder或JSON.NET)

  2. 創建看起來像所需結構的DTO(數據傳輸對象),用數據填充它們,然后序列化它們。

DTO:

public class Clazz
{
    public string className { get; set; }
    public Division[] Division { get; set; }
}

public class Division
{
    public string name { get; set; }
    public Subject[] subject { get; set; }
}

public class Subject
{
    public string name { get; set; }
}

您的JSON無效。 所有名稱和字符串值都必須用引號引起來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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