我在一个在线模式/断开连接的应用程序上工作,并在《面向ASPNET开发人员的HTML5编程》一书中找到了一个例子。
我使用ASPNET技术MVC5。
我在控制器中反序列化数据时出错:
public JsonResult SaveResults()
{
string jsonData = string.Empty;
using (StreamReader sr = new StreamReader(Request.InputStream))
{
jsonData = sr.ReadToEnd();
}
Dictionary<string, string> data = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonData);
SurveyDbEntities db = new SurveyDbEntities();
User usr = new User();
usr.FirstName = data["FirstName"];
usr.LastName = data["LastName"];
usr.Email = data["Email"];
db.Users.AddObject(usr);
db.SaveChanges();
string userEmail = data["Email"];
int usrId = (from item in db.Users
where item.Email == userEmail
select item.UserID).SingleOrDefault();
data.Remove("FirstName");
data.Remove("LastName");
data.Remove("Email");
foreach (string str in data.Keys)
{
int choiceId = int.Parse(str);
int questionId = int.Parse(data[str]);
Result result = new Result();
result.QuestionID = questionId;
result.ChoiceID = choiceId;
result.UserID = usrId;
db.Results.AddObject(result);
}
db.SaveChanges();
return Json("success");
}
此行显示错误
Dictionary<string, string> data = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonData);
我的jsonData(报价问题?):
{"Email":"test@aol.fr","FirstName":"test","LastName":"test","container":"<div data-questions-questionid="1" class="paddedDiv">Which programming language do you use?<br><input type="checkbox" data-choices-questionid="1" data-choices-choiceid="1"><span>C#</span><br><input type="checkbox" data-choices-questionid="1" data-choices-choiceid="2"><span>VB.NET</span><br><input type="checkbox" data-choices-questionid="1" data-choices-choiceid="3"><span>PHP</span></div><div data-questions-questionid="2" class="paddedDiv">Which of the following browsers do you use while developing websites?<br><input type="checkbox" data-choices-questionid="2" data-choices-choiceid="4"><span>IE9</span><br><input type="checkbox" data-choices-questionid="2" data-choices-choiceid="5"><span>Firefox</span><br><input type="checkbox" data-choices-questionid="2" data-choices-choiceid="6"><span>Chrome</span></div><div data-questions-questionid="3" class="paddedDiv">Which of the following tools do you use?<br><input type="checkbox" data-choices-questionid="3" data-choices-choiceid="7"><span>Visual Studio</span><br><input type="checkbox" data-choices-questionid="3" data-choices-choiceid="8"><span>Web Matrix</span><br><input type="checkbox" data-choices-questionid="3" data-choices-choiceid="9"><span>Expression Web</span></div>"}
然后错误:
{"After parsing a value an unexpected character was encountered: 1. Path 'container', line 1, position 105."}
知道问题出在哪里吗?
Javascript SubmitData
function SubmitData(event) {
var data = '';
for (var i = 0; i < storage.length; i++) {
var key = storage.key(i);
var value = storage[key];
var pair = '"' + key + '":"' + value + '"';
data = data + pair + ",";
}
if (data.charAt(data.length - 1) == ',') {
data = data.substring(0, data.length - 1)
}
data = '{' + data + '}';
$.ajax({
type: "POST",
url: "/Home/SaveResults",
contentType: "application/json; charset=utf-8",
data: data,
dataType: "json",
success: function(results){
alert('Results saved!');
window.localStorage.clear();
},
error: function (err) {
alert(err.status + " - " + err.statusText);
}
})
}
查看您的JSON数据:
"container":"<div data-questions-questionid="1
属性"container"的值正好在"1"之前结束所以是的。。这是一个编码错误,甚至我不知道是否还有其他问题。