hpa*_*lai 8 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
Run Code Online (Sandbox Code Playgroud)
科学家写的形式元素我们无法控制.所以在Mule方面,我们如何自动地逃避这些字符,就像java具有URLEncoded一样.非常感谢
在目标上,您可以接收文本/纯文本数据。
通过运行清理它:
input.replaceAll("\\p{Cc}", "").
Run Code Online (Sandbox Code Playgroud)
使用任何 JSON 库将其转换回 JSON 数据:
JSONObject inputParams = JSONObject.fromObject(input);
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。
在您的情况下,传入的数据看起来格式错误。它必须采用JSON 规范支持的编码:UTF-8(默认)、UTF-16 或 UTF-32。所以不确定以下内容是否适用。尽管如此...
对于大多数应用程序,我建议使用JSON 到对象映射,这将处理转义。否则,您可以直接调用Jackson(Mule使用的JSON库)的字符串转义方法。
以下是您可以在 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>
Run Code Online (Sandbox Code Playgroud)