postgresql - PSQL 为字符串添加换行符
问题描述
我在 PSQL 中有一个向特定用户发送电子邮件的函数。该函数接受一个电子邮件文本参数,并将其添加到电子邮件正文前后的一些常量文本中:
在这个函数中,我有一个 json_build_object 调用,它处理电子邮件的收件人、正文和标题:
jsonb_build_object(
'recipient',recipient,
'title',title,
'message_text', 'some text before.
some text on new line ' || body ||
' some text after.
some text on new line.'
)
我的问题是,在正文之前和之后的文本中,我无法将其格式化为单独的行。我尝试了以下方法,但没有奏效:
jsonb_build_object(
'recipient',recipient,
'title',title,
'message_text', E'some text before.\n
some text on new line \n' || body ||
E'\nsome text after.\n
some text on new line.'
)
谁能告诉我我做错了什么?
解决方案
你做对了,结果在表单中有换行符\n
。这就是 JSON 中文本中的换行符的外观。
RFC 8259 对此进行了描述:
字符串以引号开头和结尾。所有 Unicode 字符都可以放在引号内,除了必须转义的字符:引号、反斜线和控制字符(U+0000 到 U+001F)。
换行符是字符 U+000A,所以必须转义。
如果您想要未转义的换行符,请使用 JSON 以外的其他内容。
推荐阅读
- ruby-on-rails - devise 的 sign_in_and_redirect 方法是如何存储位置的,存储的位置是从哪里来的?
- java - 为什么请求正文总是空的?
- keras - 为什么神经网络中几乎每个激活函数都会在负输入值处饱和
- javascript - 如何确定用户输入是否发生了更改事件?
- c# - 有这样的对象的名称吗?我将如何用它填充树视图?
- java - Java 用特殊字符分割
- javascript - 如何使用 CSRF 在 CI 3 中实现 Summernote 删除图像
- javascript - 如果表达式 B 跟随 A,则返回 true
- java - Windows 上的 Java 路径硬编码在我在 Linux 上的 shell 脚本中,需要使其更灵活
- windows - 如何在 Windows 10 电脑上安装 Redis