3

我試圖反序列化一個學校,然後再插入到條形圖中。 JSON對象是這樣的:用C#反序列化JSON(多個對象)

[{"Subject": "TEST APP","AppScores": [{"Season": "AAAAAAAAAAAAAAAAAAAA","year": "1"}, {"Season": "BBBBBBBBBBBBBBBBBBBBB","year": "2"}]}, {"Subject": "TEST APP2","AppScores": [{"Season": "CCCCCCCCCCC","year": "3"}, {"Season": "DDDDDDDDDDDDDDDDD","year": "4"}]}] 

輸出,我希望能在Console.WriteLine();

Subject: TEST APP 
AppScores 
Season: AAAAAAAAAAAAAAAAAAAA 
Year: 1 
Season: BBBBBBBBBBBBBBBBBBBBB 
Year: 2 
Subject: TESTAPP2 
AppScores 
Season: CCCCCCCCCCC 
Year: 3 
Season: DDDDDDDDDDDDDDDDD 
Year: 4 

看到我看到這個已經在使用類似如下代碼的方式多次完成。

School subject = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<School>(json); 
foreach (var item in subject.data) 
{Console.WriteLine("season: {0}, year: {1}", item.season, item.year); Console.ReadLine();} 

從類中調用:

public class School 
{ 
public List<SchoolSubjects> data { get; set; } 
} 
public class SchoolSubjects 
{ 
public string year { get; set; } 
public string season { get; set; } 
} 

誰能幫助修改這個代碼,因爲我無法找到,會做任何的例子?提前致謝。

+0

格式已經ammended 。 – TerrorTot38

回答

1

你的問題是,你的根JSON容器是一個數組,而不是一個對象:

  • 數組是值的有序集合。一個數組以[(左括號)開頭並以](右括號)結尾。值由,(逗號)分隔。

  • 一個對象是一組無名稱/值對。一個對象以{(左大括號)開頭,以}(右大括號)結尾。

甲JSON陣列需要被反序列化爲一個集合,諸如List<T>

如果我上傳你的JSON到http://json2csharp.com/,我得到了下面的類,更名爲更恰當:

public class SchoolSubjectAppScore 
{ 
    public string Season { get; set; } 
    public string year { get; set; } 
} 

public class SchoolSubject 
{ 
    public SchoolSubject() { this.AppScores = new List<SchoolSubjectAppScore>(); } 
    public string Subject { get; set; } 
    public List<SchoolSubjectAppScore> AppScores { get; set; } 
} 

那麼你的JSON可以反序列化並打印如下:

 var root = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<List<SchoolSubject>>(json); 
     foreach (var subject in root) 
     { 
      Console.WriteLine(subject.Subject); 

      foreach (var item in subject.AppScores) 
      { 
       Console.WriteLine("season: {0}, year: {1}", item.Season, item.year); 
      } 
     } 
+0

假設列表中的變量例如item.season,item.year可以在條形圖內使用!你能幫我解決這個問題嗎? – TerrorTot38

+0

@ TerrorTot38 - 我不知道,我不得不看你想做什麼。但是,關於stackoverflow的問題推薦格式是[每個問題一個問題](http://meta.stackexchange.com/questions/39223/one-post-with-multiple-questions-or-multiple-posts)。如果這個問題得到解答,請將其標記爲這樣,然後向另一個人詢問您正在嘗試做什麼的細節。 – dbc

+0

我現在已經做到了這一點 - http://stackoverflow.com/questions/34982984/json-file-to-view-in-mvc-bar-chart-c-sharp。謝謝你的幫助。 – TerrorTot38