我正在尝试使用Grails解析JSON,测试解析器我写了一个单元测试并将我的输入JSON放在一个看起来像这样的GString中:
"""{"Information":"Some data here \"stuff\" some more.","AnswerToEverything":42,"Other":71,"Name":"Joe Doe"}"""
\“stuff \”导致解析器中断。
我尝试使用String.replace(/\\"/, "")
和其他一些组合删除\“但是它不执行任何操作或删除字符串中的所有引号。
This post告诉我,我需要使用5个斜杠:\\\\\"
使其在Java中工作,但它在Groovy中不起作用。
编辑:此测试应该通过它来运行:
str = """foo \"foobar\" bar"""
assert str.replace("""\\\"""", "") == "foo foobar bar"
使用上述正则表达式失败。
任何提示?
答案 0 :(得分:1)
据我所知,用/regexp/
编写的正则表达式似乎在使用转义反斜杠时遇到问题。您可以使用"""
构造编写正则表达式,如下所示:
str = "\\\""
assert str[0] == "\\"
assert str[1] == "\""
assert str =~ """\\\""""
assert str.replace("""\\\"""", "") == ""
编辑:原始帖子中的JSON不包含任何文字反斜杠。即使在"""strings"""
中,您仍然需要转义文字反斜杠。我猜你想逃避这些,比如下面的json2
:
json1 = """{"Information":"Some data here \"stuff\" some more.","AnswerToEverything":42,"Other":71,"Name":"Joe Doe"}"""
json2 = """{"Information":"Some data here \\"stuff\\" some more.","AnswerToEverything":42,"Other":71,"Name":"Joe Doe"}"""
assert !json1.contains("\\")
assert json2.contains("\\")
assert json2.replace("""\\\"""", "replacement").contains("replacement")