2011-06-23 41 views
2

同一個標題有類似的問題,但該解決方案對我的問題無效。JSON上的JavaScriptSerializer包含一個數組

我試圖序列以下JSON:

{"Id":1, 
"Questions": 
    [{"Id":"q-1-Q0001","Text":"Volume Too High"}, 
    {"Id":"q-1-Q0002","Text":"Volume Too Low"}], 
"Text":"My text."} 

採用這種結構在我的C#:

public class Issue 
{ 
    public Issue() { Questions = new List<Question>(); } 
    public string Id { get; set; } 
    public List<Question> Questions { get; set; } 
    public string Text { get; set; } 
} 

public class Question 
{ 
    public string Id { get; set; } 
    public string Text { get; set; } 
} 

我的JavaScript發送POST與JSON上面這個C#函數:

public JsonResult AddIssueToQueue(Issue issue) 
{ 
    var id = issue.Id; // Set correctly 
    var text = issue.Text; // Set correctly 
    var q = issue.Questions; // NOT set correctly. Set to List of two empty Question items. 
} 

id和text設置正確,但q設置爲List,其中包含兩個空Qu estion對象(Id和Text每個都爲null)。

我的JSON格式不正確嗎?爲什麼不能正確傳播Questions數組?

+0

'issue.Id'和'issue.Text'設置是否正確? –

+0

是的。 id和文本(issue.Id和issue.Text)保持正確的值。 – Paul

+0

我懷疑這是事實,但是當我使用JavaScriptSerializer序列化Issue類時,它將問題ID置於1附近,即「{」Id「:」1「,'。但是,我可以使用或不使用引號進行反序列化。 – rsbarro

回答

0

這只是一個瘋狂的猜測,但是您的JSON結構具有帶整數的ID,如上面提到的rsbarro。但是C#中的代理類需要一個字符串 - 是否有可能類型轉換混淆了?

0

這是我的ajax調用,它工作正常我收到的問題清單

$.ajax({ 
       type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      data: "{'issue':{'Id':1,'Questions':[{'Id':'q-1-Q0001','Text':'Volume Too High'},{'Id':'q-1-Q0002','Text':'Volume Too Low'}],'Text':'My text.'}}" , 

      dataType: 'html', 
      url: 'AddIssueToQueue', 
      success: function (data) { 
       if (data) { 
        //Do something 
       } 
      } 
     }); 

你可以分享你的代碼。

相關問題