2013-02-16 48 views
0

我想在C#中使用json.net創建一個json字符串。但是json數組並沒有像我期望的那樣創建。我的代碼...請幫我解決問題...json數組在json.net中的場景中沒有正確創建?

markInfo[] MarkUpdate1=new markInfo[2]; 
      string jsonString = JsonConvert.SerializeObject(new { MarkUpdate =MarkUpdate1 }, Formatting.Indented); 
      return jsonString; 

public class markInfo 
     { 
      List<string> FinalMarks = new List<string>(); 
      List<string> EvalMarks = new List<string>(); 
     } 

我的預期成果是:

{ 
    "MarkUpdate":[ 
     { 
     "FinalMarks":[ 
      { 
      } 
     ] 
     }, 
     {    
     "EvalMarks":[ 
      { 

      } 
      ] 
    } 
    ] 
} 

但它產生以下輸出:

{ 
    "MarkUpdate": [ 
    null, 
    null 
    ] 
} 
+0

FWIW,您的「預期輸出」是無效的JSON。 (從概念上講,它很好,只是語法錯誤,所有的屬性名都必須用雙引號,而不是單引號,而不是引號。) – 2013-02-16 10:45:34

+0

@TJCrowder:是的,你是對的......我會更新我的問題... – Saravanan 2013-02-16 10:52:45

+0

@Saravanan:你想要在每個數組中有一個空對象的數組,還是你真的想要空數組? – 2013-02-16 11:05:24

回答

1

您正在創建一個具有MarkUpdate屬性的匿名類型,該屬性被分配了不包含對象實例的數組值。

您是否試圖輸出MarkUpdate的一個實例?在這種情況下刪除你的數組,實例化你的markInfo類並將其序列化。

您還應該使您的FinalMarksEvalMarks屬性,它們也不標記爲公共。

string jsonString = 
    JsonConvert.SerializeObject(new MarkInfo(), Formatting.Indented); 
return jsonString; 

public class MarkInfo 
{ 
    private List<string> finalMarks; 
    private List<string> evalMarks; 

    public List<string> FinalMarks 
    { 
     get { return this.finalMarks ?? (this.finalMarks = new List<string>()); } 
     set { this.finalMarks = value; }   
    } 

    public List<string> EvalMarks 
    { 
     get { return this.evalMarks ?? (this.evalMarks = new List<string>()); } 
     set { this.evalMarks = value; }   
    } 
} 
+0

這是你的輸出JSON { 「MarkUpdate」:{ 「FinalMarks」:[], 「EvalMarks」:[] }} 你能做到這一點有點像我的上述要求? – Saravanan 2013-02-16 11:50:21

0

這條線:

markInfo[] MarkUpdate1=new markInfo[2];

...創建的markInfo陣列但不創建的實例;陣列插槽都是空的。所以,你至少需要創建它們:

markInfo[] MarkUpdate1=new markInfo[2]; 
markInfo[0] = new markInfo(); 
markInfo[1] = new markInfo(); 

這仍然不會給你「預期輸出」,不過,因爲你的預期產出只有一個條目,但你的代碼定義兩個條目。