我已经检查了at的JSON字符串响应 https://jsonformatter.curiousconcept.com/并且它表示JSON字符串有效。
以下是我用于将数据序列化为JSON字符串的函数:
private string getJSONData()
{
obj_userSession = new UserSession();
DataTable dtRender = null;
DataView dvRender = null;
obj_userSession = new UserSession();
if (obj_userSession.LoginData != null && obj_userSession.EmailsDetails != null)
{
dvRender = new DataView(obj_userSession.EmailsDetails);
dtRender = dvRender.ToTable("EmailsDetails", false, "MessageDate", "SentFrom", "MessageBody", "SentTo", "MLSNumber");
return JsonConvert.SerializeObject(dtRender);
}
return "";
}
以上是来自上述函数的响应,如JSON字符串:
[
{
"MessageDate": "2016-04-04T05:42:38.273",
"SentFrom": "Site Team",
"MessageBody": "<html>\r\n<head>\r\n\t<style type=\"text/css\">\r\n\t\t.c0 { font-family:'Arial';font-size:10.5pt; }\r\n\t\t.c1 { margin-left:0pt;margin-top:0pt;margin-right:0pt;margin-bottom:7.5pt; }\r\n\t</style>\r\n</head>\r\n<body class=\"c0\">\r\n<p class=\"c1\">Hi Joe, </p>\r\n<p class=\"c1\">Testing Site</p>\r\n<p class=\"c1\">--James</p>\r\n<p class=\"c1\"></p>\r\n</body>\r\n</html>\r\n",
"SentTo": "James",
"Number": ""
}
]
我们没有在代码中收到任何错误,但结果未在浏览器中显示。并在浏览器中的开发人员工具中出现上述错误。
如果我从函数MessageBody
中删除getJSONData
以避免序列化并从MessageBody
的设计页面中删除绑定代码,那么它可以正常工作。
我必须逃离MessageBody
以及如何做到这一点?
修改 这是AngularJS控制器函数,我用它来获取数据:
$scope.browseListing = function (strURL) {
$scope.getURL(strURL);
$http.post($scope.URL)
.then(function (response) {
$scope.Data = response.data;
if ($scope.IsMap)
$scope.LoadMapData();
if ($scope.IsDetails)
$scope.buildReportURL($scope.Data[0].ListingID);
}, function (response) {
$log.info(response);
});
};
这是html绑定:
<tr ng-repeat="listing in Data">
<td colspan="6">
<table class="tblListingOuter">
<tr>
<th style="width:20%;">
</th>
<th style="width:80%;">
</th>
</tr>
<tr>
<td><b>Date: </b>{{ listing.MessageDate }}</td>
<td><b>Message: </b></td>
</tr>
<tr>
<td><b>Sent By: </b>{{ listing.SentFrom }}</td>
<td rowspan="3">
<pre contenteditable="true" ng-bind-html="listing.MessageBody | unsafe"></pre>
</td>
</tr>
<tr>
<td><b>Sent To: </b>{{ listing.SentTo }}</td>
</tr>
<tr>
<td><b>MLSNO: </b>{{ listing.MLSNumber }}</td>
</tr>
</table>
</td>
</tr>
答案 0 :(得分:3)
在Newtonsoft JsonSerializerSettings
中,您拥有属性StringEscapeHandling
,它指定在编写json时如何转义字符串。以下代码可能适合您
var settings = new JsonSerializerSettings();
settings.StringEscapeHandling = StringEscapeHandling.EscapeHtml;
return JsonConvert.SerializeObject(dtRender, settings)
此处文档中列出的此属性的可接受值:http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_StringEscapeHandling.htm
您可以尝试使用其他标志来使其正常工作
答案 1 :(得分:0)
这只是猜测,但您可以尝试双重转义MessageBody中的转义字符,如下所示:
[
{
"MessageDate": "2016-04-04T05:42:38.273",
"SentFrom": "Site Team",
"MessageBody": "<html>\\r\\n<head>\\r\\n\\t<style type=\\"text/css\\">\\r\\n\\t\\t.c0 { font-family:'Arial';font-size:10.5pt; }\\r\\n\\t\\t.c1 { margin-left:0pt;margin-top:0pt;margin-right:0pt;margin-bottom:7.5pt; }\\r\\n\\t</style>\\r\\n</head>\\r\\n<body class=\\"c0\\">\\r\\n<p class=\\"c1\"\>Hi Joe, </p>\\r\\n<p class=\\"c1\\">Testing Site</p>\\r\\n<p class=\\"c1\\">--James</p>\\r\\n<p class=\\"c1\\"></p>\\r\\n</body>\\r\\n</html>\\r\\n",
"SentTo": "James",
"Number": ""
}
]