如何解决即使添加另一个反斜杠,JSON解析器仍在换行符上失败
因此,我正在为一个学校项目构建一个消息传递平台,并且试图保护我的数据库,保护XSS攻击并允许每个字符,包括换行符。
到目前为止,除了换行符,我已经涵盖了所有内容。 JSON解析器无法实时解析简单的换行符。
我尝试在换行符前加上另一个反斜杠(\\ n),但STILL无效!
我该怎么办?!
编辑1:添加了生成JSON数据的代码
rootWindow = RelativeLayout()
编辑2:添加了JS处理代码
string message = "[";
string uid;
for (int i = 0; i < data.Rows.Count; i++) {
if (StringCipher.ConvertToUnixTimestamp(DateTime.Now.AddMinutes(-5)) > int.Parse(data.Rows[i][5].ToString())) {
queryDelete = "DELETE * FROM Bubbleland WHERE MessageID = " + data.Rows[i][0] + ";";
commandDelete = new OleDbCommand(queryDelete,connection);
commandDelete.ExecuteNonQuery();
} else {
message += "{\"mid\":" + data.Rows[i][0];
if (data.Rows[i][1].ToString() == "")
uid = "user";
else
uid = data.Rows[i][1].ToString();
message += ",\"uid\":\"" + uid;
message += "\",\"name\": \"" + data.Rows[i][2];
message += "\",\"color\": \"" + data.Rows[i][3];
message += "\",\"content\": \"" + data.Rows[i][4];
message += "\"}";
if (i + 1 < data.Rows.Count) {
message += ",";
}
}
}
message += "]";
解决方法
弄乱了解析您提供给我的字符串后,我偶然发现了一个修复程序,并做了进一步的研究以弄清楚为什么会这样。
简单地说:
“单引号“转义”单引号”
“双引号“转义”双引号”
这些引号意味着,当使用单引号创建字符串文字时,必须使用反斜杠\
对任何单引号进行转义,以使字符串文字有效。使用双引号创建字符串文字时也是如此,但是用反斜杠转义双引号。
起初我没有意识到这个问题,尽管我一开始就知道这个问题,而且我一直都这样做。
我碰到了这个Medium article有助于将内容组合在一起的情况,建议您阅读此书,以使使用带字符串文字的单引号/双引号更加新鲜。
,事实证明,未转义的\r
弄乱了JSON解析器。
无论您何时Shift + Enter
,它都会放置\r\n
而不是简单的\n
。我不知道这样做。因此,在我的ASPX后端代码中,我将\r\n
替换为<br>
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。