2013-02-28 15 views

risposta

18
def l = Eval.me(ids) 

prende la stringa di codice scanalato (in questo caso "[10,1,9]") e valuta come scanalato . Questo ti darà una lista di 3 ints.

+2

http://www.jameswiseman.com/blog/2011/01/18/jslint-messages-eval-is-evil/ –

15
def l = ids.split(',').collect{it as int} 
+0

penso che si vuole fare una stringa "10,1,9" in una lista [10,1,9] –

+0

def id = ids.substring (1, ids.length() - 1) def l = id.split (','). Collect { it int it – user2068981

+1

Trovo questa soluzione ma non penso sia la migliore: def id = ids.substring (1, ids.length() - 1) def l = id.split (','). Collect {it as int} – user2068981

7

Utilizzare JsonSlurper!

Using Eval is not the best solution in most cases e la soluzione di manipolazione delle stringhe fallirà una volta che il tipo di dati è cambiato, quindi non è adattabile. Quindi è meglio usare JsonSlurper.

import groovy.json.JsonSlurper 

def ids = "[10, 1, 9]" 
def idList = new JsonSlurper().parseText(ids) 

assert 10 == idList[0]