如何在 JSON 中转义特殊字符

Posted

技术标签:

【中文标题】如何在 JSON 中转义特殊字符【英文标题】:How to escape Special Characters in JSON 【发布时间】:2015-01-02 18:33:14 【问题描述】:

我们有一个用于科学应用程序的表单,其中包含符号 beta(ß-arrestin) 等字符。我们有一个在 Mule 上运行的 JSON 服务,它获取数据并保存到 Oracle 数据库。这个带有长段落的特定元素在 RAML/JSON 中给了我一个错误。以下是错误

com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 9)): has to be escaped using backslash to be included in string value

科学家们编写的表单元素我们无法控制。因此,在 Mule 方面,我们如何像 java 具有 URLEncoded 一样自动转义这些字符。非常感谢

【问题讨论】:

【参考方案1】:

在您的情况下,看起来传入的数据格式不正确。它必须是 an encoding supported by the JSON spec:UTF-8(默认)、UTF-16 或 UTF-32。所以不确定以下是否适用。不过……

对于大多数应用程序,我会推荐JSON to Object mapping,它会负责转义。否则,您可以直接调用Jackson的(Mule使用的JSON库)String escape method。

这是您可以在 MEL 中使用的示例。 String.valueOf 是必要的,因为quoteAsString 返回char[]

<configuration>
  <expression-language>
    <import class="org.codehaus.jackson.io.JsonStringEncoder" />
    <global-functions>
      def quoteJSONString(s) 
        String.valueOf(JsonStringEncoder.getInstance().quoteAsString(s))
      
    </global-functions>
  </expression-language>
</configuration>

【讨论】:

【参考方案2】:

在目标上,您可以接收文本/纯文本形式的数据。

运行清理它:

input.replaceAll("\\pCc", "").

使用任何 JSON 库将其转换回 JSON 数据:

JSONObject inputParams = JSONObject.fromObject(input);

希望对你有帮助。

【讨论】:

以上是关于如何在 JSON 中转义特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 JavaScript 中转义 HTML 特殊字符吗?

我可以在 JavaScript 中转义 HTML 特殊字符吗?

需要在正则表达式中转义的所有特殊字符的列表

从php中的字符串中转义特殊字符

在正则表达式中转义特殊字符

在雪花程序中转义特殊字符