繁体   English   中英

通过MVC4传递(和解析!)JSON对象

[英]Passing (and parsing!) JSON objects through MVC4

我对于应该如何在MVC中使用JSON对象以及如何将它们从Controller传递到View到Jscript感到困惑。

我也不确定我是否正确地在正确的位置解析了JSON对象...

我的控制器返回的是带有json对象的PartialView (“ Variables ”是数据列表,例如Id = 2012,Name = BillyJoel,Value =“£2,000” ):

public ActionResult JavascriptConstants() {
    var variables = Service.Obtain<VariableService>().All().ToList();
    var json = new JavaScriptSerializer().Serialize(variables);
    return PartialView("JavascriptConstants", json);
}

然后,My View通过创建以下变量使这些数据可用于我的脚本:

@model string
...
var mvcListOfVariablesInDB = '@Html.Raw(Json.Encode(Model))';

然后,我的Jscript文件访问数据并尝试提取信息和键值对,但似乎将JSON解释为字符串:

var variableList = $.parseJSON(mvcListOfVariablesInDB);

for (var variable in variableList) {
    alert(variableList[variable]);
}

当显示字符串的每个字符时,这仅返回警报"[{等。”。如何访问JSON对象的键值?

我试过更改我的JS以使用:

var variableList = $.parseJSON(mvcListOfVariablesInDB);

但这只是给了我一个Uncaught SyntaxError: Unexpected token I在浏览器中出现了Uncaught SyntaxError: Unexpected token I错误(我假设它命中“ Id”的“ I”)。

任何帮助,不胜感激,谢谢。

我发现了问题:

问题是使用JavaScriptSerializer().Serialize(foo)因为这是创建一个包含换行符和制表符的JSON对象,而不是用\\n\\t替换它们。

$.parseJSON()无法处理换行符,因此会引发意外的令牌错误。

通过导入JSON.NET包并使用,已更正了此JSON.NET

 var json = JsonConvert.SerializeObject(variables);

这传递了一个JSON对象,其中用\\n\\t替换了换行符和制表符。 然后可以使用以下方法使视图可访问该视图:

@model string
...
var mvcListOfVariablesInDB = '@Html.Raw(Json.Encode(Model))';

最后在脚本中使用:

var variableList = $.parseJSON(mvcListOfVariablesInDB)

希望有一天能对别人有帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM