我们有一个表格,其中包含一个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一样。非常感谢
答案 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