2013-02-28 13 views
16

मैं इस String वैरिएबल को List में कैसे परिवर्तित कर सकता हूं?स्ट्रिंग वैरिएबल को एक सूची में कनवर्ट करें [ग्रोवी]

def ids = "[10, 1, 9]" 

मैं के साथ की कोशिश की: List के रूप में और toList();

+0

यह पहले से ही ग्रोवी में एक सूची है? –

+0

यह एक 'सूची' है जिसे आप इसे 'स्ट्रिंग' में परिवर्तित करना चाहते हैं? – Reimeus

+0

लेकिन जब मैं ids.each करना {यह println} मैं इस परिणाम है: [
,

]
user2068981

उत्तर

18
def l = Eval.me(ids) 

(इस मामले में "[10,1,9]") ग्रूवी कोड की स्ट्रिंग लेता है और यह रूप में ग्रूवी का मूल्यांकन करता है । यह आपको 3 इंट्स की एक सूची देगा।

+2

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

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

मुझे लगता है कि आप एक स्ट्रिंग बनाना चाहते सूची में "10,1,9" [10,1,9] –

+0

डीफ़ आईडी = ids.substring (1, ids.length() - 1) def l = id.split (',') संग्रह { यह int के रूप में} – user2068981

+1

मुझे यह समाधान मिल गया है लेकिन मुझे नहीं लगता कि यह सबसे अच्छा है: डीफ़ आईडी = ids.substring (1, ids.length() - 1) def l = id.split (',')। इसे {int के रूप में int} – user2068981

7

JsonSlurper का उपयोग करें!

Using Eval is not the best solution in most cases और डेटा प्रकार बदलने के बाद स्ट्रिंग मैनिपुलेशन समाधान विफल हो जाएगा, इसलिए यह अनुकूल नहीं है। तो JsonSlurper का उपयोग करना सबसे अच्छा है।

import groovy.json.JsonSlurper 

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

assert 10 == idList[0] 
संबंधित मुद्दे