有一个类似的问题有相同的标题,但解决方案对我的问题无效。
我正在尝试序列化以下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将带有上述JSON的POST发送到此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设置为包含两个空Question对象的List(Id和Text各为null)。
我的JSON格式不正确吗?为什么Questions数组没有正确传播?
答案 0 :(得分:0)
这只是一个疯狂的猜测,但是你的JSON结构有一个带整数的ID,如上面提到的rsbarro。但是你在C#中的代理类期待一个字符串 - 类型转换是否可能在那里混合?
答案 1 :(得分: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
}
}
});
您也可以分享您的代码。