如何摆脱特殊的角色'?'插入memsql时

时间:2016-09-06 13:17:52

标签: json regex mule special-characters memsql

我正在尝试将JSON有效负载插入memsql JSON类型列,但由于以下原因导致失败。
我的JSON内容有'?'个字符 我试图通过以下方式逃避'?',但它对我没有用。

我得到的例外是:

Root Exception stack trace:
java.lang.IndexOutOfBoundsException: Index: 0

Ex payload:"问号内容?"

1. #[org.mule.util.StringUtils.replace(payload,"?","\\?")]  

结果:"问号内容\?"

2. #[org.mule.util.StringUtils.replace(payload,"?","\?")]  

结果:不允许使用上述表达式

如果我使用有效载荷"问号内容"然后成功插入。

请帮助我如何在将{J}内容保存到'?'时将memsql转移到我的JSON内容中?

2 个答案:

答案 0 :(得分:0)

'\?本身是一个转义序列,所以你必须使用“\\?”产生“\?”哪个应该与memsql一起使用。

#[org.mule.util.StringUtils.replace(payload,"?","\\\\?")]

希望这有帮助。

答案 1 :(得分:0)

从您的异常外观来看,您似乎要求它替换有效负载,但您没有将其分配给任何东西。

取消文档:

http://grepcode.com/file/repo1.maven.org/maven2/commons-lang/commons-lang/2.4/org/apache/commons/lang/StringUtils.java#3457

它基本上说它正在尝试替换字符串中的项,并且该方法本身返回一个字符串。基于我在堆栈跟踪中可以告诉的内容,似乎您将null或未初始化的变量传递给试图解析str [0]的东西,这会返回一个超出边界的数组错误。

纠正这种情况的方法是做一些事情:

payload = org.mule.util.StringUtils.replace(payload,"?","\\\\?")

哪个应该替换任何实例?用\?并将其重新写入有效负载变量。也就是说,当您在程序中稍后对其进行评估时,有效负载实际上可能为空,这可能表明存在更大的问题。