Groovy inspect () обрабатывает знак доллара ($) - PullRequest
4 голосов
/ 14 сентября 2011

код ниже не может работать

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 $ * & ! @ # ^)"]

но если строка содержит другой специальный символ типа \ ", он работает правильно. В любом случае, как ходить?

Ответы [ 4 ]

2 голосов
/ 15 сентября 2011

(в ответ на приведенные выше действия)

ОК, если вы просто хотите обменяться информацией, вам следует использовать формат обмена данными, такой как 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 также есть встроенные парсеры.

0 голосов
/ 09 января 2014

Я только что проверил следующее, и у меня это сработало

> a = ["guy":"mogr \$ abi"]
Eval.me(a.inspect())["guy"]
mogr $a bi
0 голосов
/ 14 сентября 2011

Используйте одинарные кавычки и двойной обратный слеш, как,

def map = [name:'Test :: ( %2f %25 \\$ * & ! @ # ^)']
String s = map.inspect()
println Eval.me(s)
0 голосов
/ 14 сентября 2011

Используйте одинарные кавычки вокруг вашей строки:

def map = [name:'Test :: ( %2f %25 \$ * & ! @ # ^)']

Когда вы используете двойные кавычки, для шаблонирования используется доллар.

...