如何在JSON中转义特殊字符

时间:2014-11-06 09:52:17

标签: java json mule raml

我们有一个表格,其中包含一个scienctific应用程序的长段落,其中包含符号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 个答案:

答案 0 :(得分: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中使用的示例。 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> 会返回import edu.princeton.cs.algs4.*; public class test { static String a; public static void main(String[] args) { StdOut.println(a); } }

null