Create new array from found values in array (JSON+Groovy) -


मेरे पास एक सरणी है:

  आर = [[अवधि: [मूल्य: [x] उदाहरण के लिए: 1, दिनांक: 2011, न्यूपीस: 1.000], प्राइसक्स: [प्राइस: 2, दिनांक: 2012, न्यूपीस: 1.000]]]]]   

तत्वों के मूल्यों के साथ मुझे नया सरणी बनाने की आवश्यकता है:

  दिनांक = [2011, 2012]   

(तिथि इस सरणी से कहीं भी मौजूद हो सकती है)। मैं चक्र में पथ द्वारा बना सकता हूँ:

  आयात करें groovy.json.JsonSlurper def R = newJsonSlurper ()। ParseText (String.valueOf (messageExchange.getResponseContent ())); एम = आर। अवधि का आकार = एम.size () DEF तिथियाँ = [] के लिए (i 0 में .. (आकार-1)) {def y = M [i] तिथि dates.add (y)}   

लेकिन शायद मैं विधियों findAll () या किसी अन्य द्वारा सरणी बना सकता हूँ?

प्रतिक्रिया:

  {"f": {"stan": {"form": {"fin": {"period": [{"periodiod": "" "" "" "" "" "," पीरियोडफ़ ": {" पीरियोडफ़ ": [{" पीरियडएंडडेट ":" 2013-10-10 "," पीरियडफाइलिंग ": {" सी ": {" एक्स ":" बी "," "" "" "" "" "" "" "" "" "" "," रिपोर्ट किया गया ":" बी "}," अंतिम ":" 1 "," या ":" 2014-01: 47: 00 "," इकाइयों ": {" X ":" M " "" "" "" "": "" "" "" "," अवधि ":" ए "," SDate ":" 2013-12-31 "," स्टेट ": {" स्टेट ": [{" Fi ": {" FV " : "[1]", "डी": "2013-12 -31 "," एस ": {" पूर्ण ":" 1 "," सी ": {" एक्स ":" बी "," सीआरटीए ":" 1 "," एक्स ":" बी "}}}]} }]}}, {"पीरियडएंड": "2011-12-31", "पीरियड": {"पीरियड": [{"पीरियडएंडडेट": "2012-10-10", "पीरियड": {"क्यू": "" "": "बीएल", "रेप": "1.00", "आर": "बीएल"}, "अंतिम": "1", "मूल": "2014-01: 47", "इकाइयों": {"एक्स": "एम", "आर": "एम"}}, "पीरियड": "ए", "स्टेटडेट": "2013-12-31", "स्टेट": {"स्टेट": [ "फिन": {"एफवी": [{"सी": "आर", "वी": "1.000000"}}, "पीरियडएन्ड": "2013-12-31", "पीरियड": "ए" "डी": "2013-12-31", "वक्तव्य": {"पूर्ण": "1", "मुद्राएं": {"X": "B", "C": "1", "X": "बी"}}}}}}}}}] }}}}}}    

दिया गया:

  Def arr = [[अवधि: [मूल्य: [x: 1, दिनांक: 2011, न्यूपीस: 1.000], प्राइसक्स: [प्राइसवाई: 2, दिनांक: 2012, न्यूपीस: 1.000]]]]   

आप ऐसा कर सकते हैं:

  def दिनांक = arr.Pieriod.collectMany {it.collect {k, v - & gt; V.Date}} दिनांक == [2011, 2012]   

या

  डीआरएफ तिथियां = arr.Period * .values ​​() तिथि पर जोर दें। JSON पोस्ट के बाद संपादित करें:  

तो हम आपको PeriodEnd चाहते हैं, तो आप ऐसा कर सकते हैं:

पूर्व> नया JsonSlurper ()। ParseText (प्रतिक्रिया) .F.Stan .फ़ॉर्मेशन .फ़िन .पीरियड।

या यदि आप चाहते हैं कि StatDate तब आप कर सकते हैं:

  नया JsonSlurper ()। ParseText (प्रतिक्रिया) .F.Stan .फ़ॉर्मेशन .फ़िन .पीरियोड .PeriodFilings .PeriodFiling .StatDate.flatten ()   

संपादित करें # 2

या आप खोज को कार्यान्वित कर सकते हैं:

  सूची को खोजने के लिए (मैप, कुंजी) {map.findResults {k, v - & gt; अगर (कश्मीर == कुंजी) वी और यदि (मैप का उदाहरण) खोजों (वी, कुंजी) और अगर (v उदाहरण के संग्रह का) v.collectMany {खोज (यह, कुंजी)} {नल}। फ्लेटन ()} मिलते हैं डेटा, 'पीरियडएंडडेट') == ['2013-10-10', '2012-10-10']    

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -