2011-06-23 15 views
2

同じタイトルで同様の質問がありますが、解決策は私の問題では有効ではありません。配列を含むJSONのJavaScriptSerializer

私は、次のJSONシリアライズしようとしている:私のC#でこの構造により

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

を:

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を有効にしてC#関数に上記JSONをPOSTを送信するがあります。

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は2つの空のQuを含むリストに設定されていますestionオブジェクト(IdとTextはそれぞれnull)

JSONのフォーマットが間違っていますか? Questions配列が正しく伝播しないのはなぜですか?

+0

'issue.Id'と' issue.Text'は正しく設定されていますか? –

+0

はい。 idとtext(issue.Idとissue.Text)は正しい値を保持します。 – Paul

+0

私はこれがそれであるとは思わないが、JavaScriptSerializerを使ってIssueクラスをシリアル化すると、issue ID、すなわち{{"Id": "1"、 'しかし、引用符の有無にかかわらずデシリアライズできます。 – rsbarro

答えて

0

これは単なる推測ですが、上記のrsbarroのように、JSON構造体には整数のIDがあります。しかし、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 
       } 
      } 
     }); 

を取得しています正常に動作しています。