下面的代码无法运行
def map = [name:"Test :: ( %2f %25 \$ * & ! @ # ^)"]
String s = map.inspect()
println Eval.me(s)
得到错误:
Script1.groovy: 1: illegal string body character after dollar sign;
solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 1, column 30.
["name":"Test :: ( %2f %25 $ * & ! @ # ^)"]
但是如果字符串包含其他特殊字符,例如\“,它可以正常工作。无论如何,如何四处走动?对我来说是紧急情况
答案 0 :(得分:2)
(回应上面的跟进)
好的,如果您只想交换信息,那么您应该使用数据交换格式,例如XML或JSON。我推荐JSON,因为它轻巧,快速,而且真的易于使用:
计算机1
def map = [name:"Test :: ( %2f %25 \$ * & ! @ # ^)"]
def json = new groovy.json.JsonBuilder()
json(map)
println json.toString()
计算机2
def incoming = '{"name":"Test :: ( %2f %25 $ * & ! @ # ^)"}'
def jsonInput = new groovy.json.JsonSlurper()
def map = jsonInput.parseText(incoming)
println map
请注意,这些需要Groovy 1.8.0或更高版本才能运行。老版本的Groovy有很多例子,Grails也有内置的解析器。
答案 1 :(得分:0)
在字符串周围使用单引号:
def map = [name:'Test :: ( %2f %25 \$ * & ! @ # ^)']
答案 2 :(得分:0)
使用单引号和双反斜杠,例如
def map = [name:'Test :: ( %2f %25 \\$ * & ! @ # ^)']
String s = map.inspect()
println Eval.me(s)
答案 3 :(得分:0)
我刚刚测试了以下内容,它对我有用
> a = ["guy":"mogr \$ abi"]
Eval.me(a.inspect())["guy"]
mogr $a bi