如何在 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 特殊字符吗?