JavaScriptSerializer на JSON, содержащий массив - PullRequest
2 голосов
/ 23 июня 2011

Есть похожий вопрос с тем же названием, но решение не подходит для моей проблемы.

Я пытаюсь сериализовать следующий 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.
}

Идентификатор и текст заданы правильно, но для q задан список, содержащий два пустых объекта Вопроса (идентификатор и текст в каждом случае равны нулю).

Неправильно ли отформатирован мой JSON? Почему массив вопросов не распространяется правильно?

Ответы [ 2 ]

0 голосов
/ 07 августа 2011

Это мой 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 
                }
            }
        });

Можете ли вы также поделиться своим кодом.

0 голосов
/ 07 августа 2011

Это просто дикая догадка, но ваша структура JSON имеет идентификатор с целым числом, как упоминалось выше в rsbarro. Но ваш прокси-класс в C # ожидает строку - возможно ли, что преобразование типов там запутывается?

...