如何正确解码使用Html.Raw(JSON.Encode(Model))编码的JSON字符串
How to properly decode a JSON string encoded using Html.Raw(Json.Encode(Model))?
我正在将一些模型数据编码到一个html元素中,如下所示:
@Html.Raw(Json.Encode(Model));
返回的json字符串如下所示:
{"TestList":[{"FrequencyType":"1X","GCDs":"585.6","Identifier":"6144","SeqNo":9306,"SeqNoSpecified":true,"TSeqNo":8314,"TSeqNoSpecified":true,"TestDescr":"HBsAg"},{"FrequencyType":"1X","GCDs":"585.6","Identifier":"6124","SeqNo":9295,"SeqNoSpecified":true,"TSeqNo":8315,"TSeqNoSpecified":true,"TestDescr":"HCV Ab"},{"FrequencyType":"1X","GCDs":"585.3","Identifier":"6","SeqNo":9729,"SeqNoSpecified":true,"TSeqNo":8309,"TSeqNoSpecified":true,"TestDescr":"HD Monthly LS"}],"Frequency":[{"Key":"ANNUAL","Value":"Annually"},{"Key":"BIMONTH","Value":"Bi-Monthly"},{"Key":"BIWEEK","Value":"Bi-Weekly"},{"Key":"MON","Value":"Monthly"},{"Key":"1X","Value":"One Time"},{"Key":"QTR","Value":"Quarterly"},{"Key":"SMAN","Value":"Semi-Annual"},{"Key":"WEEK","Value":"Weekly"}]};
当我尝试使用JSON.parse
解析时,我得到了一个错误:
arrayTestList = [];
var jsonTestList = $('#TestList').text();
jsonTestList = JSON.stringify(jsonTestList);
arrayTestList = JSON.parse(jsonTestList);
alert(arrayTestList.TestList[0]); // <===== this line is failing
Unable to get value of the property '0': object is null or undefined
如何将这个jsonTestList
字符串转换为javascript数组,以便正确访问arrayTestList
的元素?
编辑:
对不起,我忘了提我的编辑。基本上,上面的javascript代码位于Partial View 2中。我对模型进行json编码的代码在另一个Partial View 1中。从PV2,我无法访问PV1的模型对象,所以我只是将内容转储到div
标记中,这样我就可以访问这个列表TestList
元素。
尝试删除此行:
jsonTestList = JSON.stringify(jsonTestList);
jsonTestList
已经是一个JSON字符串
问题现已解决。
我得到了一个无效字符,但无法立即识别是哪个字符导致了问题。我发现我的JSON字符串无效,因为Json.Encode
方法输出了尾随分号。我验证了JSON字符串@http://jsonlint.com.
删除分号后,json字符串将作为JavaScript数组填充到arrayTestList
对象中。
现在,正如上面两个答案中所提到的,只要这样就可以了,不需要JSON.stringify
。
var arrayTestList = [];
var jsonTestList = $('#TestList').text().replace(";","");
arrayTestList = JSON.parse(jsonTestList);
alert(arrayTestList.TestList[0]);
为什么要使用Json.Encode
?另外,在您的代码中,为什么要首先编写冗余代码?您使用的是JSON.stringify
和JSON.parse
同一对象。
jsonTestList = JSON.stringify(jsonTestList);
arrayTestList = JSON.parse(jsonTestList);
根据我的理解,只有Html.Raw
可以工作
在JavaScript 中
var jsonObject = @Html.Raw(Model.TestList); //Here you will get JavaScript Object
var jsonTestList = jsonObject.TestList;
相关文章:
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- 如何正确使用Json
- 没有根和跨域,无法使JSON正确读取
- Firefox使用JQuery返回不正确的JSON
- handler没有为JSON响应正确填充模板
- MVC5:通过 Ajax 发布 JSON 时未正确将数据传递到控制器
- 对于循环未正确访问 JSON 对象
- 使用 Jquery 以正确的格式构建 JSON
- 迭代 JSON 文件并且未在 Javascript 中正确返回结果
- 使用JSON的正确Angularjs方法维护RESTful urls
- JSON 如何正确解析嵌套的 JSON
- 如果JSON不正确,如何验证JSON字符串并返回错误
- JSON的正确语言是什么
- jQuery JSON没有正确地向Ci传递数据
- 在rails中创建JSON对象,然后使用jQuery/Ajax从操作中获取JSON的正确方法是什么?
- 如何在javascript/jquery中循环json并正确读取数据
- 如何修复引号ajax json?(函数正确把)
- 如何在JSON中正确访问数据.解析语句
- 我如何从openlibrary api解析Json数据?(正确)
- 通过AJAX检索PHP JSON数据-正确的数据请求结构