4

以下のコードは実行できません

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

4 に答える 4

2

(上記のフォローアップに応じて)

OK、情報を交換したいだけの場合は、XMLやJSONなどのデータ交換形式を使用する必要があります。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

これらが機能するには、Groovy1.8.0以降が必要であることに注意してください。古いバージョンのGroovyの例はたくさんあり、Grailsには独自のパーサーも組み込まれています。

于 2011-09-15T03:38:20.610 に答える
0

文字列を一重引用符で囲みます。

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

二重引用符を使用する場合、テンプレートにはドル文字が使用されます

于 2011-09-14T06:14:22.543 に答える
0

以下をテストしたところ、うまくいきました

> a = ["guy":"mogr \$ abi"]
Eval.me(a.inspect())["guy"]
mogr $a bi
于 2014-01-09T11:02:19.920 に答える
0

一重引用符と二重バックスラッシュを使用します。

def map = [name:'Test :: ( %2f %25 \\$ * & ! @ # ^)']
String s = map.inspect()
println Eval.me(s)
于 2011-09-14T07:53:34.657 に答える