将textarea值转换为有效的JSON字符串

让我们

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

我所说的“转换”是指转义诸如“ \ n”和“””之类的字符。顺便说一句,我是从HTML接收用户输入的textarea

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

如果用户输入

您好新世界,
我的名字叫“很棒”。

在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对象转换为字符串。

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

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

更新:

JSON.stringify(content)运作良好,但在开头和结尾都添加了双引号。而且我不得不手动删除它以满足我的需要。

迪迪埃·奥佩斯特(Didier Aupest)

是的,完全可以。您无需重新发明已经存在的内容,并且您的代码将对其他开发人员更有用。

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

例如,您可能希望发送另一个输入的内容,该内容将在以后开发。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将datetime字符串转换为有效的日期值和有效的时间值

来自分类Dev

将枚举值转换为逗号分隔字符串的最有效方法

来自分类Dev

将字符串转换为有效的JSON对象

来自分类Dev

以有效的方式从字符串值转换为浮点值的缺少值的DataFrame列

来自分类Dev

如何安全地将包含转义JSON的字符串转换为有效JSON?

来自分类Dev

Ruby / Rails:如何将键值字符串(包括数组值)转换为有效哈希

来自分类Dev

JS:将值从 textarea 转换为有效的 JSON 对象

来自分类Dev

将字符向量转换为字符串的最有效方法

来自分类Dev

将SQL对象转换为Node.js中的有效Json字符串-Azure

来自分类Dev

阻止Go的json.Marshal将字符串强制转换为有效的UTF-8 Unicode?

来自分类Dev

使用Angular将json对象中的通用文本字符串转换为有效的url

来自分类Dev

测试Alexa技能返回“将Lambda事件JSON有效负载转换为字符串时出错”

来自分类Dev

无法将字符串转换为 JSON。字符串到有效的 JSON 并在 PHP 中解析 JSON

来自分类Dev

从字符串转换为数字,但只转换为有效整数的字符串

来自分类Dev

将字符串转换为有效的数据范围

来自分类Dev

将字符串转换为有效的url内容

来自分类Dev

将HTML转换为有效字符串

来自分类Dev

将字符串序列转换为URI的有效方法

来自分类Dev

将度/分/秒转换为有效的EXIF接口字符串

来自分类Dev

将numpy数组转换为字符串的最有效方法

来自分类Dev

将字符串转换为有效日期的函数中的问题

来自分类Dev

将字符串转换为有效的DateTime格式

来自分类Dev

如何将字符串转换为有效的电子邮件地址?

来自分类Dev

有效地将大的 BigInteger 转换为字符串,ToString() 耗时太长

来自分类Dev

如何将带有JSON字符串的Pandas DataFrame转换为有效JSON?

来自分类Dev

如何最有效地将特定字节从二进制文件转换为字符串

来自分类Dev

将日期从回历转换为公历日期时,字符串未被识别为有效的日期时间

来自分类Dev

如何将欧洲格式的字符串日期转换为有效的mysql日期格式?

来自分类Dev

即使导致缓冲区溢出,将int转换为字符串仍然有效

Related 相关文章

  1. 1

    将datetime字符串转换为有效的日期值和有效的时间值

  2. 2

    将枚举值转换为逗号分隔字符串的最有效方法

  3. 3

    将字符串转换为有效的JSON对象

  4. 4

    以有效的方式从字符串值转换为浮点值的缺少值的DataFrame列

  5. 5

    如何安全地将包含转义JSON的字符串转换为有效JSON?

  6. 6

    Ruby / Rails:如何将键值字符串(包括数组值)转换为有效哈希

  7. 7

    JS:将值从 textarea 转换为有效的 JSON 对象

  8. 8

    将字符向量转换为字符串的最有效方法

  9. 9

    将SQL对象转换为Node.js中的有效Json字符串-Azure

  10. 10

    阻止Go的json.Marshal将字符串强制转换为有效的UTF-8 Unicode?

  11. 11

    使用Angular将json对象中的通用文本字符串转换为有效的url

  12. 12

    测试Alexa技能返回“将Lambda事件JSON有效负载转换为字符串时出错”

  13. 13

    无法将字符串转换为 JSON。字符串到有效的 JSON 并在 PHP 中解析 JSON

  14. 14

    从字符串转换为数字,但只转换为有效整数的字符串

  15. 15

    将字符串转换为有效的数据范围

  16. 16

    将字符串转换为有效的url内容

  17. 17

    将HTML转换为有效字符串

  18. 18

    将字符串序列转换为URI的有效方法

  19. 19

    将度/分/秒转换为有效的EXIF接口字符串

  20. 20

    将numpy数组转换为字符串的最有效方法

  21. 21

    将字符串转换为有效日期的函数中的问题

  22. 22

    将字符串转换为有效的DateTime格式

  23. 23

    如何将字符串转换为有效的电子邮件地址?

  24. 24

    有效地将大的 BigInteger 转换为字符串,ToString() 耗时太长

  25. 25

    如何将带有JSON字符串的Pandas DataFrame转换为有效JSON?

  26. 26

    如何最有效地将特定字节从二进制文件转换为字符串

  27. 27

    将日期从回历转换为公历日期时,字符串未被识别为有效的日期时间

  28. 28

    如何将欧洲格式的字符串日期转换为有效的mysql日期格式?

  29. 29

    即使导致缓冲区溢出,将int转换为字符串仍然有效

热门标签

归档