gpt4 book ai didi

javascript - 将文本区域值转换为有效的 JSON 字符串

转载 作者:行者123 更新时间:2023-11-29 10:12:00 26 4
gpt4 key购买 nike

我试图确保用户的输入在提交到服务器之前被转换为有效的 JSON 字符串。

我所说的“转换”是指转义字符,例如“\n”和“"”。顺便说一句,我正在从 HTML 中获取用户输入 textarea .

将用户输入转换为有效的 JSON 字符串对我来说非常重要,因为它将以 JSON 格式发布到服务器并发送回客户端。 (无效的 JSON 字符串将使整个响应无效)

如果用户输入

Hello New World,
My Name is "Wonderful".

在 HTML 中 <textarea> ,

var content = $("textarea").val();

内容将包含换行符和双引号。

服务器和数据库处理和存储数据不是问题。

当服务器将客户端发布的数据以 发布时的 JSON 格式发回给他们时,我的问题就出现了

让我通过举一些我的服务器响应的例子来进一步阐明它。这是一个 JSON 响应,看起来像这样

{ "code": 0, "id": 1, "content": "USER_POSTED_CONTENT" }

如果USER_POSTED_CONTENT包含换行符'\n'、双引号或任何必须转义但未转义的字符,则不再是有效的 JSON 字符串,客户端的 JavaScript 引擎无法解析数据。

所以我试图确保客户端提交的是有效的 JSON 字符串。

这是我在做一些研究后想出的。

String.prototype.escapeForJson = function() {
return this
.replace(/\b/g, "")
.replace(/\f/g, "")
.replace(/\\/g, "\\")
.replace(/\"/g, "\\\"")
.replace(/\t/g, "\\t")
.replace(/\r/g, "\\r")
.replace(/\n/g, "\\n")
.replace(/\u2028/g, "\\u2028")
.replace(/\u2029/g, "\\u2029");
};

我使用此函数转义所有需要转义的字符,以创建有效的 JSON 字符串。

var content = txt.val().escapeForJson();
$.ajax(
...
data:{ "content": content }
...
);

但是……好像str = JSON.stringify(str);做同样的工作!

然而,看了之后又怎样JSON.stringify真的是为了,我只是一头雾水。它说JSON.stringify就是把JSON Object转成字符串。

我并不是真的将 JSON 对象转换为字符串。

所以我的问题是...使用 JSON.stringify 完全没问题吗?将用户输入转换为有效的 JSON 字符串对象??

更新:

JSON.stringify(content) 效果很好,但它在开头和结尾添加了双引号。而且我必须根据需要手动删除它。

最佳答案

是的,完全没问题。您不需要重新发明已经存在的东西,您的代码将对其他开发人员更有用。

编辑:你可能想使用对象而不是简单的字符串,因为你想发送一些其他信息。

例如,您可能想发送另一个将在稍后开发的输入的内容。

如果目标浏览器是 IE7 或更低版本且未添加 json2.js,则不应使用 stringify。

关于javascript - 将文本区域值转换为有效的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31735828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com